mcn*_*ium 15 linux mysql php ubuntu
将我的 ubuntu 服务器升级到 13.04 后,我的 phpmyadmin 不再可用。浏览器报告 500(内部服务器错误)并在 error.log 中显示:
PHP 致命错误:require_once():在第 370 行的 /usr/share/phpmyadmin/libraries/select_lang.lib.php 中无法打开所需的 './libraries/php-gettext/gettext.inc' (include_path='.')
任何其他 php 软件在机器上都可以正常工作,mysql 本身也是如此。phpmyadmin 已正确安装并且在 dist 升级之前运行良好。我也这样做了,sudo aptitude reinstall phpmyadmin
但这没有帮助。
phpmyadmin 的版本号为 4:3.5.8.1-1
任何想法,这里可能有什么问题?
/edit:现在我发现这里的符号链接似乎不起作用:
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
Run Code Online (Sandbox Code Playgroud)
我备份了该文件夹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
Run Code Online (Sandbox Code Playgroud)
所以它应该立即遵循符号链接。在 ubuntu 升级之前一切正常。那么符号链接有什么问题呢?
小智 23
为他人:
sudo apt-get install php-gettext
Run Code Online (Sandbox Code Playgroud)
可能是答案(尤其是在 php7 中,因为它似乎默认不包括在内,可能是因为它是一个梨扩展)。
小智 7
对我来说,以下解决方案解决了这个问题:
在我的网站 conf 文件中,我有以下部分:
<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>
Run Code Online (Sandbox Code Playgroud)
自 Ubuntu 13.04 安装以来,我所做的唯一更改是在 open_basedir 中包含 /usr/share/php/php-gettext/ ,这就是诀窍。
小智 5
如果您已经open_basedir
包含/usr/share/php/php-gettext/
(如我的情况)并且您无法使用以前的答案,请执行以下操作:
sudo rm /usr/share/phpmyadmin/libraries/php-gettext/*
Run Code Online (Sandbox Code Playgroud)
删除符号链接
sudo ln /usr/share/php/php-gettext/* /usr/share/phpmyadmin/libraries/php-gettext
Run Code Online (Sandbox Code Playgroud)
创建硬链接
这使 phpmyadmin 再次工作。为什么它在 13.04 中断并且符号链接没有被跟踪,而 apache.conf 说他们应该,对我来说仍然是个谜。