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/

존재합니다. 소유자는 루트:루트이고 권한은 둘 다에 대한 것입니다: 755

php-gettext에는 php-php-gettext에 있는 3개 파일(동일한 이름을 가진 링크 및 대상)에 대한 3개의 심볼릭 링크가 포함되어 있습니다.

  • gettext.inc
  • gettext.php
  • 스트림.php

모든 파일은 루트:루트에 속합니다. 심볼릭 링크 권한: 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 구성)을 업데이트하세요.

관련 정보