我在运行 RHEL7 的 vanilla Web 服务器上将 PHP 从 5.4 升级到了 PHP 7.2。PHP7.2 的源代码是使用 的 RHSC yum
。我还安装了此版本的标准支持库(包括)rh-php72-php-fpm
,并将其作为服务启动。
我愿意不是从本地主机访问 Web 服务器,但通过 Web。目前,我已启用“要求全部授予” phpMyAdmin.conf
(当我恢复正常运行时将锁定)。
该服务器有SELinux启用 - 但情况一直如此,我不认为SELinux是导致这个问题的原因(首先:禁用SELinux 沒有差異)。
当为 Apache 2.4 Web 服务器启用 PHP 7.2 时,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(甚至重启了 Web 服务器),但到目前为止,还是不行——PHP 7.2 运行正常,但对于phpMyAdmin。
如果有人之前见过这种情况,并且知道解决办法,那就太好了!但也欢迎提出有关如何调试的建议。
答案1
我设法想出了一个解决方法:如果我从我的 webroot 创建一个到的符号链接/usr/share/phpMyAdmin
,phpMyAdmin在该路径上可用。即在 webroot 中执行以下命令使phpMyAdmin使用路径/phpmyadmin
:
ln -s /usr/share/phpMyAdmin/ phpmyadmin
我不知道这是否是典范解决这个问题,所以请随意提供其他答案 - 但至少这个符号链接有效。