如何在 RHEL7 上使用 PHP 7.2 修复 phpMyAdmin?

如何在 RHEL7 上使用 PHP 7.2 修复 phpMyAdmin?

我在运行 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 响应(即请求实际上不存在的文件)不同。下面的屏幕截图显示了两者的区别。第一个是在请求/phpmyadminindex.php存在)时,第二个是在请求/phpmyadmin/zzzz(不存在)时。请求.html此目录中存在的文件有效。

两个屏幕

error_logApache中的错误消息是:

[…] [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/phpMyAdminphpMyAdmin在该路径上可用。即在 webroot 中执行以下命令使phpMyAdmin使用路径/phpmyadmin

ln -s /usr/share/phpMyAdmin/ phpmyadmin

我不知道这是否是典范解决这个问题,所以请随意提供其他答案 - 但至少这个符号链接有效。

相关内容