Назад | Перейти на главную страницу

Как исправить phpMyAdmin с PHP 7.2 на RHEL7?

Я обновил PHP с 5.4 до PHP 7.2 на обычном веб-сервере под управлением RHEL7. Источник PHP7.2 - RHSC, использующий yum. Я также установил стандартные вспомогательные библиотеки для этой версии, включая rh-php72-php-fpm, и запустил его как службу.

я делаю не доступ к веб-серверу с локального хоста, но через Интернет. На данный момент у меня есть "Требовать все предоставлено" в phpMyAdmin.conf (заблокируется, когда я снова заработаю).

На этом сервере есть SELinux включен - но так было всегда, и я не думаю SELinux является причиной этой проблемы (с одной стороны: отключение SELinux без разницы).

Когда PHP 7.2 включен для веб-сервера Apache 2.4, phpMyAdmin перестает работать (остальная часть сайта выглядит нормально).

Я установил phpMyAdmin много лет назад используя sudo yum install phpmyadmin - и с тех пор не прикасался к нему.

Сообщение об ошибке на веб-странице: «Файл не найден». Это отличается от обычного ответа 404 (т. Е. Запроса файла, который действительно не существует). На дампах экрана ниже показана разница. Первый - при запросе /phpmyadmin (где index.php существует), второй при запросе /phpmyadmin/zzzz (которого не существует). Запрос .html-файлы, существующие в этом каталоге, работают.

Сообщения об ошибках в error_log для Apache это:

[…] [Proxy_fcgi: error] […] […] AH01071: Получена ошибка: «Неизвестный основной сценарий \ n»
[…] [Autoindex: error] […] […] AH01276: Невозможно обслужить каталог / usr / share / phpMyAdmin /: Соответствующий DirectoryIndex (index.html) не найден, и созданный сервером индекс каталога запрещен директивой Options

я верить это сообщение об ошибке указывает, что Apache не распознает index.php как законный файл сценария.

Однако я проверил, и конфигурация Apache говорит:

<IfModule dir_module>
  DirectoryIndex index.html index.php
</IfModule>

Apache не имеет проблем с загрузкой index.php из любого другого каталога, являющегося частью веб-сайта.

Моя конфигурация Apache в основном тот, который поставляется с RHEL7. Чтобы загрузить файл конфигурации для PHP-FPM, я поставил следующее в конце httpd.conf:

#Load config files in the "/etc/httpd/conf.d" directory, if any.
<IfModule proxy_module>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1
</IfModule>
IncludeOptional conf.d/*.conf

Материал внутри IfModule условные не являются частью версии, поставляемой с RHEL7. Других изменений в httpd.conf.

Я перезапустил Apache (и даже перезагрузил веб-сервер), но пока безуспешно - PHP 7.2 работает нормально, но не для phpMyAdmin.

Если кто-то видел это раньше и знает решение, отлично! Но также будут приветствоваться предложения о том, как это отладить.

Мне удалось найти обходной путь: если я создам символическую ссылку из своего корневого веб-сайта на /usr/share/phpMyAdmin, phpMyAdmin становится доступным на этом пути. Т.е. следующая команда в корневом веб-каталоге делает phpMyAdmin доступно по пути /phpmyadmin:

ln -s /usr/share/phpMyAdmin/ phpmyadmin

Я не знаю, если это канонический Решение этой проблемы, поэтому, пожалуйста, предоставьте альтернативные ответы, но, по крайней мере, эта символическая ссылка работает.