
ubuntu 系统升级后,apache 2.4.52 与 php 8.1 共存时常见 php 文件(如 phpinfo.php)无法执行的问题,根源通常是 php 模块未正确安装或 apache 配置未启用对应版本。
ubuntu 系统升级后,apache 2.4.52 与 php 8.1 共存时常见 php 文件(如 phpinfo.php)无法执行的问题,根源通常是 php 模块未正确安装或 apache 配置未启用对应版本。
在 Ubuntu 22.04.1 升级后,系统可能残留旧版 PHP 模块配置(如 php8.0),而新安装的 PHP 8.1 并未自动注册为 Apache 的处理模块。此时即使 php -v 显示 CLI 版本正常(如 PHP 8.1.2),Web 请求仍会返回空白页、下载 .php 文件或直接 404 —— 这表明 Apache 未将 .php 扩展名交由 PHP 解析器处理。
✅ 正确修复步骤如下(请逐条执行):
-
重装 PHP 8.1 核心及 Apache 模块
注意:原答案中命令存在版本不一致问题(混用php8.1和libapache2-mod-php8.0),必须统一为php8.1:sudo apt update sudo apt install --reinstall php8.1 libapache2-mod-php8.1
-
启用 PHP 8.1 模块配置(关键)
Ubuntu 22.04 默认使用libapache2-mod-php8.1(而非 FPM 模式),因此不应启用php8.1-fpm配置(该配置适用于 PHP-FPM + proxy_fcgi 场景)。正确操作是确保php8.1模块已加载:sudo a2enmod php8.1
✅ 验证:执行
apache2ctl -M | grep php,应输出php8_module (shared)。 -
重启 Apache 服务
立即学习“PHP免费学习笔记(深入)”;
sudo systemctl restart apache2
-
验证是否生效
在/var/www/html/下创建测试文件:echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php
访问
http://localhost/phpinfo.php,若正常显示 PHP 信息页,则修复成功。
⚠️ 注意事项:
- 不要混用
libapache2-mod-php8.0和php8.1,否则会导致模块冲突或 Apache 启动失败; - 若曾手动启用
php8.1-fpm,请先禁用:sudo a2disconf php8.1-fpm,避免与mod_php模式冲突; - 确保
/etc/apache2/mods-enabled/php8.1.load存在且内容正确(指向/usr/lib/apache2/modules/libphp8.1.so); - 如仍失败,检查 Apache 错误日志:
sudo tail -f /var/log/apache2/error.log。
总结:Ubuntu 升级后 PHP 失效的核心在于 Apache 模块版本错配与配置未同步。统一安装 php8.1 及其对应 libapache2-mod-php8.1,并显式启用 php8.1 模块,即可恢复 .php 文件的正常解析能力。



















