CentOS服务器无法将PHP 5.4升级至PHP 7问题求助
我之前在CentOS上折腾PHP版本切换的时候也碰到过一模一样的问题,大概率是系统里同时存着PHP5.4和PHP7的环境,或者Web服务器还在死死盯着旧模块不肯切换。下面是我亲测有效的排查和解决步骤:
第一步:先搞清楚系统里到底跑的是哪个PHP版本
先打开终端,敲这些命令定位问题根源:
# 查看命令行PHP版本 php -v # 查看当前PHP执行文件的路径 which php
这两个命令能帮你快速区分问题出在系统环境还是Web服务器配置。
如果CLI显示PHP7,但phpinfo()还是5.4(Web服务器锅)
这种情况说明PHP7已经装好了,但Apache还在加载旧的PHP5.4模块,按下面步骤调整:
- 检查Apache加载的PHP模块:
如果输出里是httpd -M | grep phpphp5_module,那实锤是旧模块在搞鬼。 - 禁用PHP5的Apache配置:
把旧配置文件改名,让Apache找不到它:sudo mv /etc/httpd/conf.d/php5.conf /etc/httpd/conf.d/php5.conf.bak sudo mv /etc/httpd/conf.modules.d/10-php5.conf /etc/httpd/conf.modules.d/10-php5.conf.bak - 确保PHP7的Apache模块已安装并启用:
如果之前没装对应模块,先安装(这里以webtatic源的php70为例,根据你用的源调整包名):
安装完成后会自动生成PHP7的配置文件在yum install php70w-apache2/etc/httpd/conf.d/php7.conf。 - 重启Apache服务并刷新页面:
最后按# CentOS 7+用这个 sudo systemctl restart httpd # 老版本CentOS用这个 sudo service httpd restartCtrl+F5强制刷新浏览器的phpinfo页面,别让缓存骗了你!
如果CLI也显示PHP5.4(系统环境锅)
这种情况说明系统默认的PHP还是指向旧版本,得调整软链接或环境变量:
- 先找出PHP7的安装路径:
你会看到类似yum list installed | grep phpphp70w-cli.x86_64的包,PHP7的执行文件一般在/usr/bin/php7或/usr/local/bin/php7。 - 修改默认PHP的软链接:
先删掉旧的软链接(如果存在):
再把软链接指向PHP7的执行文件(路径根据实际情况调整):sudo rm /usr/bin/phpsudo ln -sf /usr/bin/php7 /usr/bin/php - 重新打开终端,再跑
php -v确认版本已经切换。
额外排查:如果你用的是php-fpm模式
如果你的Web服务器是Nginx,或者Apache用了php-fpm处理PHP请求,还要检查php-fpm服务:
- 查看当前运行的php-fpm版本:
systemctl status php-fpm - 切换到PHP7的fpm服务:
sudo systemctl stop php-fpm sudo systemctl start php70w-fpm sudo systemctl enable php70w-fpm - 确保Web服务器配置里指向的是PHP7的fpm套接字,比如Nginx的
fastcgi_pass要改成unix:/var/run/php70w-fpm.sock(具体路径看PHP7的fpm配置文件)。
内容的提问来源于stack exchange,提问作者user9644880
相关产品推荐
相关产品推荐

