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

Ubuntu 22.04切换PHP版本:CLI生效但Apache版本无变化的问题

问题原因及解决方法

核心原因

update-alternatives --config php 仅控制CLI命令行的PHP版本,Apache服务器的PHP版本由其加载的PHP模块(mod_php)或配置的PHP-FPM服务决定,两者属于独立的配置体系,因此CLI切换成功后浏览器端版本不会自动同步。

分场景解决步骤

场景1:Apache使用mod_php模块(传统方式)

如果你的Apache通过加载PHP模块处理PHP请求,按以下步骤操作:

  1. 禁用当前启用的PHP模块(以当前为php8.1为例):
    sudo a2dismod php8.1
    
  2. 启用目标PHP版本的模块(以切换到php8.3为例):
    sudo a2enmod php8.3
    
  3. 重启Apache服务使配置生效:
    sudo systemctl restart apache2
    
  4. 验证:新建info.php文件,内容为<?php phpinfo(); ?>,通过浏览器访问该文件,查看页面顶部的PHP版本信息。

场景2:Apache使用PHP-FPM(推荐,性能更优)

如果服务器采用PHP-FPM处理PHP请求(多数现代配置会用这种方式),按以下步骤操作:

  1. 确保目标版本的PHP-FPM服务正常运行(以php8.3为例):
    sudo systemctl start php8.3-fpm
    sudo systemctl enable php8.3-fpm  # 设置开机自启
    
  2. 禁用所有mod_php模块(避免冲突):
    sudo a2dismod php8.1 php8.2 php8.3
    
  3. 启用Apache所需的FPM依赖模块:
    sudo a2enmod proxy_fcgi setenvif
    
  4. 编辑站点配置文件(路径通常为/etc/apache2/sites-available/你的站点配置.conf),找到PHP请求处理的配置块,替换为目标版本的FPM套接字路径:
    示例配置(替换成对应版本的套接字):
    <FilesMatch \.php$>
        SetHandler proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost
    </FilesMatch>
    
  5. 验证Apache配置语法是否正确:
    sudo apache2ctl configtest
    
  6. 重启Apache和目标版本的FPM服务:
    sudo systemctl restart apache2 php8.3-fpm
    
  7. 同样通过info.php验证浏览器端的PHP版本。

常见排查点

  • 确认站点配置文件中的FPM套接字路径是否正确(不同版本的路径仅PHP版本号不同)
  • 避免同时启用mod_php和PHP-FPM,会导致请求处理冲突
  • 执行命令后务必重启对应服务,配置才会生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:02:50