14

После обновления моего сервера Ubuntu до 13.04 мой phpmyadmin больше не доступен. браузер сообщает 500 (внутренняя ошибка сервера) и в error.log пишет:

Неустранимая ошибка PHP: require_once(): не удалось открыть обязательный файл './libraries/php-gettext/gettext.inc' (include_path = '.') В /usr/share/phpmyadmin/libraries/select_lang.lib.php в строке 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'd символическую ссылку, теперь она работает. так что на самом деле это проблема с символической ссылкой.

это начало моего /etc/phpmyadmin/apache.conf

# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php

поэтому он должен следовать символическим ссылкам сразу. до обновления убунту все работало нормально. так что случилось с символическими ссылками?

4 ответа4

23

Для других:

sudo apt-get install php-gettext

может быть ответом (особенно с 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>

Единственное изменение, которое я сделал после установки Ubuntu 13.04, это включить /usr /share /php /php-gettext / в open_basedir, и это помогло.

5

Если ваш 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 говорит, что должен, остается для меня загадкой.

0

Мне пришлось отключить (префикс #) Alias /phpmyadmin /usr/share/phpmyadmin в /etc/apache2/conf-available/phpmyadmin.conf так как я использую пользовательский файл vhost для phpmyadmin для обслуживания его на поддомене. С дополнительным Alias по какой-то причине это не сработало.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .