CentOS 6中PHP版本设置问题:CLI与phpinfo()版本不一致
这种情况太常见了——你升级的只是CLI版本的PHP,但你的Web服务器(不管是Apache还是Nginx)还在死死抱着旧的PHP 5.3模块或者配置不肯撒手。下面分两种主流服务器场景给你一步步解决:
如果你用的是Apache服务器
- 先把旧的PHP 5.3模块禁用掉
先看看当前Apache加载了哪些PHP模块,跑这条命令:apachectl -M | grep php
如果输出里有php5_module(这就是对应5.3的模块),先把它禁用:a2dismod php5 - 启用PHP 5.6的模块
接着启用新的5.6模块:a2enmod php5.6 - 重启Apache让配置生效
这条命令跑起来:service apache2 restart - 额外确认:检查站点配置
有时候个别站点可能单独指定了PHP版本,打开你的站点配置文件(比如/etc/apache2/sites-available/your-site.conf),看看有没有类似SetHandler application/x-httpd-php5.6的配置,确保指向的是5.6版本。
如果你用的是Nginx服务器
Nginx是靠php-fpm来处理PHP请求的,所以重点要搞定php-fpm的版本:
- 先停掉旧的PHP 5.3-fpm服务
先把旧服务停了,还要禁止它开机自启:service php5.3-fpm stop systemctl disable php5.3-fpm - 启动PHP 5.6-fpm服务
然后启动新的5.6版本的fpm,设置开机自启:service php5.6-fpm start systemctl enable php5.6-fpm - 修改Nginx的站点配置
打开你的站点配置文件(比如/etc/nginx/sites-available/your-site.conf),找到处理PHP的location块,确保fastcgi_pass指向的是PHP 5.6的socket或者端口,比如:location ~ \.php$ { fastcgi_pass unix:/run/php/php5.6-fpm.sock; # 要是用端口的话,改成 fastcgi_pass 127.0.0.1:9000; 但要确认这是5.6的fpm端口 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } - 重启Nginx生效
service nginx restart
通用检查小技巧
不管用哪种服务器,都可以做这两步确认:
- 看
phpinfo()里的「Loaded Configuration File」项,找到它加载的php.ini路径,对比一下是不是PHP 5.6对应的配置文件(比如/etc/php/5.6/apache2/php.ini或者/etc/php/5.6/fpm/php.ini)。 - 用
which php看看CLI的PHP路径,再确认Web服务用的PHP路径和它是否一致(如果不一致,说明Web服务没用到新的PHP版本)。
内容的提问来源于stack exchange,提问作者Christopher M.
相关产品推荐
相关产品推荐

