
ubuntu系统升级后,apache虽已安装但php模块未正确启用或版本不匹配,导致phpinfo.php等页面无法正常解析,需重新安装php模块并启用对应配置。
ubuntu系统升级后,apache虽已安装但php模块未正确启用或版本不匹配,导致phpinfo.php等页面无法正常解析,需重新安装php模块并启用对应配置。
在Ubuntu 22.04.1升级后,常见现象是:apache2 服务运行正常(可通过 curl http://localhost 验证),php -v 显示 CLI 版本为 PHP 8.1.2,但访问 phpinfo.php 时浏览器直接下载文件或显示源码——这表明 Apache 未加载 PHP 处理模块,而非 PHP 本身缺失。
根本原因通常是:
- 升级过程中,旧版 PHP 模块(如
libapache2-mod-php8.0)未自动迁移到新版(PHP 8.1); -
libapache2-mod-php8.1未安装,或已安装但未启用; - 配置冲突(如误启用了
php8.1-fpm但未配置ProxyPassMatch或SetHandler); - Apache 的
mime_module和php_module未被正确加载。
✅ 正确解决步骤如下(请严格按顺序执行):
-
安装 PHP 8.1 的 Apache 模块(关键!)
立即学习“PHP免费学习笔记(深入)”;
sudo apt update sudo apt install libapache2-mod-php8.1
⚠️ 注意:原答案中
libapache2-mod-php8.0是错误的(与当前 PHP 8.1 不匹配),必须使用php8.1后缀模块。安装该包会自动启用php8.1.conf并加载php_module。 -
禁用冲突配置(如有)
若之前手动启用了php8.1-fpm(如执行过sudo a2enconf php8.1-fpm),而未配置 FastCGI 处理器,则会导致 Apache 忽略.php文件。建议先禁用:sudo a2disconf php8.1-fpm
-
确保必要模块已启用
sudo a2enmod php8.1 mime
mime模块用于正确识别.php文件类型(AddType application/x-httpd-php .php依赖它)。 -
重启 Apache
sudo systemctl restart apache2
-
验证配置
创建测试文件/var/www/html/phpinfo.php:<?php phpinfo(); ?>
访问
http://localhost/phpinfo.php—— 应正常显示 PHP 8.1 信息页。
? 补充说明:
- 不推荐混用
mod_php(模块模式)与php-fpm(FastCGI 模式)在同一虚拟主机中,除非明确配置了ProxyPassMatch;默认推荐使用libapache2-mod-php8.1(即mod_php)。 - 若需使用
php-fpm,则应禁用libapache2-mod-php8.1,启用php8.1-fpm服务,并在虚拟主机中添加:<FilesMatch \.php$> SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost/" </FilesMatch> - 检查模块是否加载成功:
apache2ctl -M | grep php应输出php8_module (shared)。
完成以上操作后,PHP 将通过 Apache 模块方式稳定运行,phpinfo() 可正常响应。



















