You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache2环境下PHP5.6与7.2并行运行,切换至5.6失败求助

在Apache2中切换PHP5.6无效的问题排查与解决

我最近在Ubuntu的Apache2环境里折腾并行运行PHP5.6和PHP7.2,结果发现切换到PHP7.2一切正常,但切回PHP5.6的时候完全没效果。先说说我已经做了哪些操作:

已完成的操作步骤

  • 添加了ondrej的PHP源并更新了系统包:
    sudo add-apt-repository ppa:ondrej/php
    sudo apt-get update
    
  • 安装了PHP5.6及必备的扩展:
    sudo apt-get install php5.6 php5.6-mysql php5.6-mbstring libapache2-mod-php5.6
    
  • 切换到PHP7.2的命令是有效的,执行后版本成功切换:
    sudo a2dismod php5.6 ; sudo a2enmod php7.2 ; sudo service apache2 restart
    sudo update-alternatives --set php /usr/bin/php7.2
    
  • 但尝试切回PHP5.6的时候,我输入命令到一半就发现不对了:
    sudo a2dismod php7.2 ; sudo a2enmod php5...
    

针对这个问题,我整理了几个排查和解决的方法:

问题排查与解决方法

1. 先补全并执行完整的切换命令

你切换回PHP5.6的命令明显没写完,完整的正确命令应该是这样的:

sudo a2dismod php7.2 && sudo a2enmod php5.6 && sudo service apache2 restart

另外别忘了同步更新CLI的PHP版本(如果你需要命令行也用PHP5.6的话):

sudo update-alternatives --set php /usr/bin/php5.6

这里建议用&&代替;,这样前一个命令执行成功才会继续下一个,能避免一些因为前序命令失败导致的错误状态。

2. 验证Apache的PHP模块加载状态

执行下面的命令,看看Apache当前实际加载的是哪个PHP模块:

apache2ctl -M | grep php

如果输出里有php5.6_module (shared),说明模块已经加载成功;如果还是显示php7.2的模块,那你可以去/etc/apache2/mods-enabled/目录下看看,手动删掉php7.2相关的软链接,再重新启用php5.6模块后重启Apache。

3. 针对特定站点指定PHP版本(可选)

如果只是个别站点需要用PHP5.6,全局切换反而麻烦,那可以直接在站点的VirtualHost配置里指定PHP版本,比如:

<FilesMatch \.php$>
    SetHandler application/x-httpd-php5.6
</FilesMatch>

修改完配置后记得重启Apache,这样这个站点就会单独用PHP5.6,其他站点还是用默认的PHP7.2,非常灵活。

4. 验证切换结果

不管用哪种方法切换,最后都建议创建一个简单的info.php文件来确认:

<?php phpinfo(); ?>

把这个文件放到网站根目录,访问它之后看页面顶部的PHP版本信息,就能确定是不是真的切换成功了。

内容的提问来源于stack exchange,提问作者Imnotapotato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:39:03