问题描述
将我的ubuntu服务器升级到13.04之后,我的phpmyadmin不再可用。浏览器报告500(内部服务器错误),并且在error.log中显示:
PHP Fatal error: require_once(): Failed opening required ‘./libraries/php-gettext/gettext.inc’ (include_path=’.’) in /usr/share/phpmyadmin/libraries/select_lang.lib.php on line 370
任何其他php软件在计算机上都可以正常运行,mysql本身也可以。 Phpmyadmin已正确安装,并且在dist-upgrade之前运行正常。我也做了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
我备份了文件夹php-gettext
,然后cp -r将符号链接移到另一边,现在可以使用了。因此这实际上似乎是symlink-problem。
这是我/etc/phpmyadmin/apache.conf
的开始
# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
因此应该立即遵循符号链接。在ubuntu升级之前,一切正常。那么符号链接怎么了?
最佳方法
对我来说,以下解决方案解决了这个问题:
在我的网站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>
自从安装Ubuntu 13.04以来,我所做的唯一更改是在open_basedir中包含了/usr /share /php /php-gettext /,并且达到了目的。
次佳方法
为他人:
sudo apt-get install php-gettext
可能是答案(特别是在php7中,因为默认情况下似乎不包括此功能,可能是因为它是pear扩展名)。
第三种方法
如果您的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表示应该链接,却没有遵循符号链接,这对我来说还是个谜。