ubuntu 升级后 phpmyadmin 符号链接错误

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 说他们应该,对我来说仍然是个谜。