将我的 ubuntu 服务器升级到 13.04 后,我的 phpmyadmin 不再可访问。浏览器报告 500(内部服务器错误),并且在 error.log 中显示:
PHP 致命错误:require_once():无法在 /usr/share/phpmyadmin/libraries/select_lang.lib.php 第 370 行中打开所需的‘./libraries/php-gettext/gettext.inc’(include_path=‘.’)
任何其他 php 软件都可以在机器上正常工作,mysql 本身也是如此。phpmyadmin 在 dist-upgrade 之前已正确安装并正常工作。我也这样做了,sudo aptitude reinstall phpmyadmin
但这没有帮助。
phpmyadmin的版本号为4:3.5.8.1-1
有什么想法吗,这里可能有什么问题?
/编辑:现在我发现,这里的符号链接似乎不起作用:
mcnesium@fluse:/usr/share/phpmyadmin/libraries/php-gettext$ ls -l
total 0
lrwxrwxrwx 1 root root 36 Apr 25 03:38 gettext.inc -> ../../../php/php-gettext/gettext.inc
lrwxrwxrwx 1 root root 36 Apr 25 03:38 gettext.php -> ../../../php/php-gettext/gettext.php
lrwxrwxrwx 1 root root 36 Apr 25 03:38 streams.php -> ../../../php/php-gettext/streams.php
我备份了该文件夹php-gettext
并将符号链接的文件夹 cp -r 过来,现在它可以工作了。所以这实际上似乎是一个符号链接问题。
这是我的开始/etc/phpmyadmin/apache.conf
# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
所以它应该立即跟随符号链接。在 ubuntu 升级之前,一切都运行良好。那么符号链接有什么问题?
答案1
对我来说,以下解决方案解决了该问题:
在我的网站配置文件中,有以下部分:
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/
</IfModule>
自安装 Ubuntu 13.04 以来,我做的唯一更改是在 open_basedir 中包含 /usr/share/php/php-gettext/,这起了作用。
答案2
为他人:
sudo apt-get install php-gettext
可能是答案(特别是对于 php7,因为它似乎默认不包含在内,可能是因为它是一个 pear 扩展)。
答案3
如果您已经open_basedir
包含/usr/share/php/php-gettext/
(如我的情况)并且您无法使其与以前的答案一起工作,那么请执行以下操作:
sudo rm /usr/share/phpmyadmin/libraries/php-gettext/*
删除符号链接
sudo ln /usr/share/php/php-gettext/* /usr/share/phpmyadmin/libraries/php-gettext
创建硬链接
这让 phpmyadmin 再次工作。为什么它在 13.04 中崩溃了,并且符号链接没有被跟踪,而 apache.conf 说它们应该被跟踪,这对我来说仍然是个谜。
答案4
如果phpMyAdmin在Nginx服务器上运行,则还需要添加密钥的php.ini
路径。/usr/share/php/php-php-gettext
open_basedir