CentOS 6多PHP版本部署问题:php-fpm服务无法识别
解决CentOS 6下Remi多版本PHP(5.6/7.2)服务识别与部署问题
你这明显是踩了CentOS版本差异的坑——参考的是CentOS7的教程,但CentOS6的服务管理逻辑、Remi多版本PHP的命名规则和CentOS7完全不一样,这就是问题的核心。咱们一步步拆解解决:
1. 先搞懂正确的服务名称
Remi源在CentOS6上装的多版本PHP,每个版本的php-fpm服务都是带版本前缀的,不是通用的php-fpm。你得用这些命令来管理对应版本的服务:
- 管理PHP5.6:
service php56-php-fpm start/stop/restart/status - 管理PHP7.2:
service php72-php-fpm start/stop/restart/status
你之前看到的两个php-fpm进程,其实就是这两个带版本的服务,只是service --status-all没显示完整名称而已。
2. 验证当前运行的PHP进程对应版本
用这条命令可以直观看到每个php-fpm进程的实际版本路径:
ps aux | grep php-fpm
输出里会显示类似/opt/remi/php56/root/usr/sbin/php-fpm(对应PHP5.6)、/opt/remi/php72/root/usr/sbin/php-fpm(对应PHP7.2)的路径,确认两个版本是否真的在运行。
3. 设置开机自启(CentOS6用chkconfig而非systemctl)
CentOS6不支持systemctl,要让这两个服务开机自动启动,得用:
chkconfig php56-php-fpm on chkconfig php72-php-fpm on
4. 配置Apache让不同站点对应不同PHP版本
你说只有PHP5.6可用,大概率是Apache还没配置指向PHP7.2的php-fpm套接字。每个版本的php-fpm监听地址在各自的配置文件里:
- PHP5.6配置:
/etc/opt/remi/php56/php-fpm.d/www.conf,默认监听/var/opt/remi/php56/run/php-fpm/www.sock - PHP7.2配置:
/etc/opt/remi/php72/php-fpm.d/www.conf,默认监听/var/opt/remi/php72/run/php-fpm/www.sock
给需要用PHP7.2的虚拟主机添加FastCGI规则,比如:
<VirtualHost *:80> ServerName your-domain.com DocumentRoot /var/www/html/your-site # 指向PHP7.2的套接字 ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/var/opt/remi/php72/run/php-fpm/www.sock|fcgi://localhost/var/www/html/your-site/ </VirtualHost>
需要用PHP5.6的站点,把套接字路径换成5.6的就行。配置完重启Apache:service httpd restart
5. 验证PHP版本
在对应站点的根目录创建phpinfo.php:
<?php phpinfo(); ?>
访问这个文件,就能确认当前站点用的PHP版本是否正确了。
内容的提问来源于stack exchange,提问作者ziedmaz




