從 Ubuntu 16.04 升級到 18.04 後 phpMyAdmin 無法運作

從 Ubuntu 16.04 升級到 18.04 後 phpMyAdmin 無法運作

我有一個有 MySQL、Apache2 和 phpMyAdmin 的 Ubuntu 伺服器。今天我從 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 個指向 php-php-gettext 中 3 個檔案的符號連結(連結和目標具有相同的名稱),它們是:

  • 獲取文本公司
  • 取得文字.php
  • 流.php

所有文件都屬於 root:root。符號連結的權限:777。


這是 common.inc.php,第 74 到 77 行:

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

這裡有什麼問題嗎?

更重要的是:我必須做什麼來糾正它?

答案1

看起來 PHP gettext 目錄的位置會隨著升級而改變,而且您正在使用open_basedir限制載入 PHP 檔案的目錄。

若要解決該問題,請更新您的open_basedir設定php.ini(或可能在 Apache 的配置中)以包含新路徑。

相關內容