Я обновил 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
Я не знаю, если это канонический Решение этой проблемы, поэтому, пожалуйста, предоставьте альтернативные ответы, но, по крайней мере, эта символическая ссылка работает.