Ubuntu 16.04 から 18.04 にアップグレードした後、phpMyAdmin が動作しない

Ubuntu 16.04 から 18.04 にアップグレードした後、phpMyAdmin が動作しない

私はMySQL、Apache2、phpMyAdminを搭載したUbuntuサーバーを持っています。今日、Ubuntu 16.04から18.04にアップグレードしました。今、phpMyAdminに何もコンテンツのない空白の白いWebページが表示されるという問題が発生しています。

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');
}

両方のディレクトリ、

  • php を /usr/share/php/php-gettext/ にコピーします。
  • php を /usr/share/php/php-php-gettext/ にコピーします。

存在します。所有者はroot:root、権限は両方:755です。

php-gettext には、php-php-gettext 内の 3 つのファイルへの 3 つのシンボリック リンク (リンクとターゲットが同じ名前) が含まれています。

  • ゲットテキスト
  • テキストファイル
  • ストリーム

すべてのファイルはルート:root に属します。シンボリックリンクの権限: 777。php-php-gettext 内のファイルの権限は 644 です。


これは common.inc.php の 74 行目から 77 行目です。

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

ここで何が問題なのでしょうか?

さらに重要なのは、それを修正するために何をしなければならないかということです。

答え1

open_basedirアップグレードにより PHP gettext ディレクトリの場所が変更され、 PHP ファイルがロードされるディレクトリを制限するために使用されているようです。

この問題を解決するには、 のopen_basedir設定php.ini(または Apache の構成) を更新して新しいパスを含めます。

関連情報