源码安装Apache HTTPD的服务器如何通过yum安装PHP及相关RPM包
可行解决方案
以下是经过验证的3种适配不同场景的解决方案,可根据你的实际需求选择:
方案1:临时跳过依赖强制安装(适合临时测试、已确认Apache版本兼容场景)
如果已经确认你源码编译的Apache版本和待安装的PHP 5.x RPM包的Apache模块接口兼容,可以直接跳过httpd依赖检查完成安装:
- 用yum直接安装时跳过依赖校验:
yum install --setopt=strict=0 php php-pecl-jsonc
- 若上述命令仍报错,可以先下载对应RPM包到本地,用rpm命令强制忽略依赖安装:
yum install --downloadonly --downloaddir=/tmp/php_rpms php php-pecl-jsonc rpm -ivh --nodeps /tmp/php_rpms/*.rpm
注意:该方案会破坏RPM依赖树的一致性,仅推荐临时测试使用,生产环境优先选择方案2
方案2:构建虚拟HTTPD RPM包补全依赖(生产环境推荐)
通过构建一个无实际业务文件的空RPM包,向RPM数据库注册你已经源码安装的HTTPD,从根源解决依赖缺失问题,不会破坏系统依赖树:
- 首先获取你源码编译的Apache版本号,替换后续步骤中的对应参数:
# 替换为你实际的Apache二进制文件路径 /usr/local/apache2/bin/httpd -v
- 安装RPM构建工具:
yum install -y rpm-build
- 创建虚拟包的spec配置文件
httpd-virtual.spec,内容如下:
Name: httpd-virtual Version: 2.4.57 # 替换为你上一步查到的实际Apache版本号 Release: 1%{?dist} Summary: Virtual package for source compiled Apache License: GPL BuildArch: noarch Provides: httpd = %{version} %description Virtual package to satisfy httpd dependency for manually compiled Apache HTTP Server %files %changelog
- 构建并安装虚拟包:
rpmbuild -bb httpd-virtual.spec rpm -ivh ~/rpmbuild/RPMS/noarch/httpd-virtual-*.rpm
操作完成后即可正常执行yum install php php-pecl-jsonc等命令,不会再提示httpd依赖缺失。
方案3:源码编译安装PHP及扩展(兼容性最优)
如果不希望调整系统RPM依赖,可以选择完全源码编译PHP及所需扩展,和你现有源码编译的Apache完美适配:
- 先安装PHP编译所需的基础依赖:
yum install -y gcc make libxml2-devel openssl-devel bzip2-devel curl-devel libpng-devel libjpeg-devel freetype-devel
- 下载对应PHP 5.x版本源码包,解压后进入目录执行配置,需指定你现有Apache的apxs工具路径:
# 替换apxs路径为你实际的Apache安装路径下的apxs位置,其余扩展参数可按需增减 ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --with-curl --with-openssl --enable-zip
- 编译安装PHP:
make && make install
- 安装额外扩展(以php-pecl-jsonc为例):
pecl install jsonc # 安装完成后在php.ini中添加一行配置:extension=jsonc.so,重启Apache即可生效
安全提示:PHP 5.x官方已停止维护多年,存在大量已知高危安全漏洞,非必要不建议继续在生产环境使用,请尽量升级至仍在安全维护期的PHP版本
内容的提问来源于stack exchange,提问作者Tarcisio Júnior
相关产品推荐
相关产品推荐

