Ошибка символьных ссылок phpmyadmin после обновления Ubuntu

15

После обновления моего сервера 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

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

mcnesium
источник
Проверьте разрешения в разделе /usr/share/php/php-gettext. Вы используете SELinux / AppArmor?
Дауд

Ответы:

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, и это помогло.

GDL
источник
23

Для других:

sudo apt-get install php-gettext

может быть ответом (особенно с php7, так как кажется, что это не включено по умолчанию, возможно, потому что это расширение груши).

twicejr
источник
Я получил ошибку после выполнения новой установки Ubuntu 16.04. Он работал после обновления 15.10 до 16.04, но мне пришлось сделать новую установку из-за других проблем. Явная установка php-gettextпакета (и добавление Require all grantedв phpmyadmin.conf) заставила его снова работать.
Bovender
1
это актуальный ответ!
Тика
Спасибо за это; Я не думал об этом; это и php-mbstringбыло необходимо, чтобы phpmyadmin работал правильно для меня с php7
jhaagsma
1
Это странно, потому что php-gettext является зависимостью пакета phpmyadmin: packages.ubuntu.com/xenial/phpmyadmin, поэтому я не уверен, почему его там еще нет.
Сэм Уилсон
Сначала установите LAMP, затем phpmyadmin, возможно, это является частью проблемы
дваждыjr
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 говорит, что должен, остается для меня загадкой.

user221931
источник
Спасибо, что сделал это. Строка open_basedir уже содержала каталог php-gettext, поэтому переустановка этих ссылок была необходима.
Карма Fusebox
0

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

Лоренц Хаазе
источник
0

Если phpMyAdmin работает на сервере Nginx, php.iniдополнительно необходимо добавить путь /usr/share/php/php-php-gettextк open_basedirключу.

Счастливчик Люк
источник