CentOS 6安装PHP 7.2时出现httpd-mmn版本冲突如何解决?
解决CentOS 6上PHP 7.2与源码编译httpd 2.4的版本冲突问题
碰到这种httpd-mmn版本冲突的问题,本质原因很明确:CentOS 6默认yum源里的PHP包是针对系统自带的httpd 2.2编译的,而你自己源码编译的httpd 2.4使用了不同的模块魔术数字(MMN),yum安装时校验不通过就会抛出冲突错误。下面给你两种靠谱的解决思路:
方法一:源码编译PHP 7.2适配你的httpd 2.4
既然你已经手动编译了httpd 2.4,最直接的方式就是同步编译PHP 7.2,让它和你的httpd版本完全匹配:
- 先安装编译PHP所需的依赖包:
yum install gcc gcc-c++ make autoconf libxml2-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel
- 下载PHP 7.2的稳定源码包(这里选7.2.34版本,你也可以选其他同分支的稳定版):
wget https://www.php.net/distributions/php-7.2.34.tar.gz
- 解压并进入源码目录:
tar -zxvf php-7.2.34.tar.gz && cd php-7.2.34
- 配置编译参数,关键是指定你自己编译的httpd的apxs路径(比如你的httpd安装在
/usr/local/apache2,那apxs路径就是/usr/local/apache2/bin/apxs),其他参数按需添加:
./configure --prefix=/usr/local/php72 \ --with-apxs2=/usr/local/apache2/bin/apxs \ --enable-fpm \ --with-mysqli \ --with-pdo-mysql \ --with-openssl \ --with-zlib \ --with-curl \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-mcrypt \ --enable-mbstring \ --enable-xml \ --enable-session \ --enable-ftp \ --enable-pcntl
- 编译并安装:
make && make install
- 配置php.ini文件:
cp php.ini-development /usr/local/php72/lib/php.ini # 如果是生产环境,建议用php.ini-production
- 修改httpd.conf配置,添加PHP模块支持:
找到httpd.conf文件(通常在/usr/local/apache2/conf/httpd.conf),添加以下内容:
LoadModule php7_module modules/libphp7.so <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
- 重启httpd服务:
/usr/local/apache2/bin/apachectl restart
方法二:改用yum源安装httpd 2.4,再匹配安装PHP 7.2
如果不想折腾源码编译,你可以把自己手动编译的httpd卸载,改用yum源里的httpd 2.4,这样就能直接用yum安装适配的PHP 7.2:
- 先卸载你源码编译的httpd:
cd /path/to/your/httpd-source-dir make uninstall # 再清理残留文件,比如rm -rf /usr/local/apache2
- 安装EPEL和Remi源(CentOS 6专属版本):
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-6.rpm
- 启用Remi源里的httpd 2.4仓库:
yum-config-manager --enable remi-httpd24
- 安装httpd 2.4:
yum install httpd
- 启用Remi源里的PHP 7.2仓库:
yum-config-manager --enable remi-php72
- 安装PHP 7.2及常用扩展:
yum install php php-cli php-common php-gd php-mysql php-mbstring php-curl
- 启动httpd服务并设置开机自启:
service httpd start chkconfig httpd on
这两种方法都能解决你的版本冲突问题,如果你想保留自定义编译的httpd配置,选方法一;如果想省心用yum管理,选方法二就好。
内容的提问来源于stack exchange,提问作者edbras
相关产品推荐
相关产品推荐

