ubuntu 升级后 phpmyadmin 符号链接错误

ubuntu 升级后 phpmyadmin 符号链接错误

将我的 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-gettextopen_basedir

相关内容