phpMyAdmin не работает после обновления с Ubuntu 16.04 до 18.04

phpMyAdmin не работает после обновления с Ubuntu 16.04 до 18.04

У меня есть сервер Ubuntu с MySQL, Apache2 и phpMyAdmin. Сегодня я сделал обновление с Ubuntu 16.04 до 18.04. Теперь у меня проблема, что phpMyAdmin показывает просто пустую белую веб-страницу без какого-либо контента.

Я нашел эти записи в журнале ошибок Apache (клиент и реферер отредактированы мной):

[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>

Эти строки журнала относятся к следующим ресурсам:

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

Но это файлы, которые я никогда не менял вручную. Поэтому я не решаюсь менять их сейчас.

Это vendor_config.php, строки с 60 по 68 (строка 64 начинается с «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');
}

Оба каталога,

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

существуют. Их владелец root:root, разрешение для обоих: 755

php-gettext содержит 3 символические ссылки на 3 файла в php-php-gettext (ссылка и цель с одинаковым именем), а именно:

  • gettext.inc
  • получитьтекст.php
  • streams.php

Все файлы принадлежат root:root. Права доступа к символическим ссылкам: 777. Права доступа к файлам в php-php-gettext: 644.


Это common.inc.php, строки 74–77:

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

Что здесь не так?

что еще важнее: что мне нужно сделать, чтобы это исправить?

решение1

Похоже, что расположение вашего каталога PHP gettext изменилось при обновлении, и вы используете его open_basedirдля ограничения каталогов, из которых загружаются файлы PHP.

Чтобы решить эту проблему, обновите open_basedirнастройки php.ini(или, возможно, конфигурацию Apache), указав новый путь.

Связанный контент