如何强制 httpd 使用红帽软件集合中的 rh-php56

Posted

技术标签:

【中文标题】如何强制 httpd 使用红帽软件集合中的 rh-php56【英文标题】:How to force httpd to use rh-php56 from red hat software collections 【发布时间】:2015-09-18 22:40:01 【问题描述】:

任何人有幸让 httpd 使用 Red Hat Software Collections 中的 rh-php56 吗?

我看到有关如何在 CLI 中启用较新版本的 php 的文档...但不是为了让 Apache 使用通过 rh-php56 包安装的新版本的 PHP。

(我应该澄清一下——这是针对 RHEL 7.x 机器的)

【问题讨论】:

【参考方案1】:

我最近不得不为 RHEL 7 机器上的一些 PHP webapps 升级到 php56。我查看了 httpd24 路由​​,出于某种原因,将股票 nginx RHEL 包与 rh-php56-phprh-php56-php-fpm 一起使用似乎要简单得多。

    安装你需要的rh-php56-php包 启用并启动rh-php56-php-fpm systemd 服务并在/etc/opt/rh/rh-php56/ 中配置php-fpm(即编辑php-fpm.confphp-fpm.d/www.conf 文件)。您需要决定是否希望 php-fpm 至少侦听 unix 套接字或通过 TCP,并且正确配置日志记录以帮助进行故障排除也是一个好主意。 将 nginx 配置为代理到您的 php-fpm unix 套接字或 TCP 地址,例如,localhost:9000。 php-fpm 和 Drupal / Mediawiki / Wordpress / 等的 nginx 配置上有大量可搜索的资源。

【讨论】:

【参考方案2】:

将 LoadModule 命令添加到您的 httpd.conf 并将其指向 RHSCL 中的 php56 模块:

LoadModule php5_module /opt/rh/httpd24/root/usr/lib64/httpd/modules/librh-php56-php5.so

这似乎对我有用,但我只测试了基本的页面渲染。如果有一些与在常规 Apache 配置中加载特殊集合模块相关的错误,我不会感到惊讶。毕竟,RH Special Collections 软件包故意安装到文件系统的完全不同的部分以避免冲突。您可能需要考虑使用 RHSCL 中的 HTTPD24 和 PHP56 以避免配置问题。

【讨论】:

【参考方案3】:

rh-php56 只为 httpd24 提供 mod_php(不适用于基本系统)

更简单的方法是使用 php-fpm(它也允许以线程模式运行 apache)

见:

http://blog.remirepo.net/post/2014/08/01/Apache-httpd-server-2.4.10-and-PHP-FPM-5.6-in-Fedora-21 http://blog.remirepo.net/post/2014/03/28/PHP-FPM-and-HTTPD-2.4-improvement

总结以上帖子,在/etc/httpd/conf.d/php.conf中使用

# Redirect to local php-fpm is mod_php not available
<IfModule !mod_php5.c>
    <FilesMatch \.php$>
        SetHandler "proxy:fcgi://127.0.0.1:9000"
    </FilesMatch>
</IfModule>

【讨论】:

这方面有什么新进展吗?我在 CentOS 7 上遇到同样的问题,无法让 httpd 使用 rh-php56。我宁愿不必通过 php-fpm 重定向请求,这似乎是错误的?或者我只是对这个太沉迷了...... 恕我直言 mod_php 应该死掉 ;) FPM 在安全性(独立进程)和性能(允许在线程模式下运行 apache)方面要好得多。

以上是关于如何强制 httpd 使用红帽软件集合中的 rh-php56的主要内容,如果未能解决你的问题,请参考以下文章

红帽RHCE考试上午-RHCSA(RH134)任务概览[2021最新版]

虚拟机中用RH搭建apache服务器,在安装httpd过程出现错误,求解

红帽Linux入门指南第二期:Linux的基本使用

02 计算机基础

02 计算机基础

02 计算机基础