You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动