phpMyAdmin não funciona após atualização do Ubuntu 16.04 para 18.04

phpMyAdmin não funciona após atualização do Ubuntu 16.04 para 18.04

Tenho um servidor Ubuntu com MySQL, Apache2 e phpMyAdmin. Hoje fiz uma atualização do Ubuntu 16.04 para 18.04. Agora eu tenho o problema, que o phpMyAdmin está mostrando apenas uma página em branco, sem qualquer conteúdo.

Encontrei essas entradas no log de erros do Apache (cliente e referenciador editados por mim):

[Mon Aug 27 20:10:00.558433 2018] [php7:warn] [pid 17925] [client <ip:port>] PHP Warning:  is_dir(): open_basedir restriction in effect. File(/usr/share/php/php-php-gettext/) is not within the allowed path(s): (/usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/) in /usr/share/phpmyadmin/libraries/vendor_config.php on line 64, referer: <url>
[Mon Aug 27 20:10:00.560176 2018] [php7:warn] [pid 17925] [client <ip:port>] PHP Warning:  require_once(): open_basedir restriction in effect. File(/usr/share/php/php-php-gettext/gettext.inc) is not within the allowed path(s): (/usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/) in /usr/share/phpmyadmin/libraries/common.inc.php on line 77, referer: <url>
[Mon Aug 27 20:10:00.561106 2018] [php7:warn] [pid 17925] [client <ip:port>] PHP Warning:  require_once(/usr/share/php/php-php-gettext/gettext.inc): failed to open stream: Operation not permitted in /usr/share/phpmyadmin/libraries/common.inc.php on line 77, referer: <url>
[Mon Aug 27 20:10:00.561554 2018] [php7:error] [pid 17925] [client <ip:port>] PHP Fatal error:  require_once(): Failed opening required '/usr/share/php/php-gettext/gettext.inc' (include_path='.') in /usr/share/phpmyadmin/libraries/common.inc.php on line 77, referer: <url>

Estas linhas de log referem-se a estes recursos:

  • /usr/share/phpmyadmin/libraries/vendor_config.php on line 64
  • /usr/share/phpmyadmin/libraries/common.inc.php on line 77

Mas esses são arquivos que nunca alterei manualmente. Portanto, não me atrevo a mudá-los agora.

Este é vendor_config.php, linha 60 a 68 (a linha 64 começa com "if"):

/**
 * Path to gettext.inc file. Useful when you want php-gettext somewhere else,
 * eg. /usr/share/php/gettext/gettext.inc.
 */
if (is_dir('/usr/share/php/php-php-gettext/')) {
    define('GETTEXT_INC', '/usr/share/php/php-php-gettext/gettext.inc');
} else {
    define('GETTEXT_INC', '/usr/share/php/php-gettext/gettext.inc');
}

Ambos os diretórios,

  • /usr/share/php/php-gettext/
  • /usr/share/php/php-php-gettext/

existir. O proprietário deles é root:root, a permissão é para ambos: 755

php-gettext contém 3 links simbólicos para os 3 arquivos em php-php-gettext (link e destino com o mesmo nome), que são:

  • gettext.inc
  • gettext.php
  • fluxos.php

Todos os arquivos pertencem a root:root. Permissões de links simbólicos: 777. As permissões dos arquivos em php-php-gettext são: 644.


Este é common.inc.php, linha 74 a 77:

/**
 * Load gettext functions.
 */
require_once GETTEXT_INC;

O que há de errado aqui?

mais importante: o que devo fazer para corrigi-lo?

Responder1

Parece que a localização do diretório gettext do PHP mudou com a atualização e você está usando open_basedirpara restringir de quais diretórios os arquivos PHP são carregados.

Para resolver o problema, atualize sua open_basedirconfiguração php.ini(ou possivelmente na configuração do Apache) para conter o novo caminho.

informação relacionada