ubuntu 20.04 安装 php 8.0.30 后 .php 页面无法解析,核心是 apache 未加载 php8.0 模块或未配置 .php 处理器:需安装 libapache2-mod-php8.0、执行 sudo a2enmod php8.0、确认 addhandler 配置存在,并禁用冲突的 php8.0-fpm;php -v 正常不等于 web 环境正常,最终须重启 apache 并查 error.log 定位具体错误。

Ubuntu 20.04 安装 PHP 8.0.30 后 .php 页面无法解析(如访问 phpinfo.php 显示空白、下载源码、或直接 404),核心问题不是 PHP 本身没装好,而是 Apache 没把请求交给它处理。下面分三步直击关键环节:
确认 Apache 是否加载了 PHP 8.0 模块
运行命令检查模块是否启用:
apache2ctl -M | grep php
正常应输出类似:php8_module (shared)
如果无输出,说明模块未加载。此时需确保已安装对应模块并启用:
- 安装
libapache2-mod-php8.0(不是php8.0-fpm) - 执行
sudo a2enmod php8.0 - 检查
/etc/apache2/mods-enabled/php8.0.load是否存在,内容应为:LoadModule php8_module /usr/lib/apache2/modules/libphp8.0.so
检查 Apache 是否识别 .php 后缀为可执行类型
PHP 模块加载后,还需告诉 Apache 把 .php 文件交由 PHP 解析。默认情况下 Ubuntu 20.04 的 libapache2-mod-php8.0 包会自动配置 AddHandler,但若手动改过配置或混用其他源,可能丢失该规则。
验证方法:
grep -r "AddHandler.*x-httpd-php" /etc/apache2/
应找到类似行(通常在 /etc/apache2/mods-available/php8.0.conf 中):AddHandler application/x-httpd-php .php
如果没有,请手动添加到主配置(如 /etc/apache2/apache2.conf)或虚拟主机配置中,并重启服务。
验证 PHP CLI 正常 ≠ Web 环境正常php -v 显示 8.0.30 只说明命令行可用,不代表 Apache 能调用它。常见干扰项包括:
- 同时启用了
php8.0-fpm和mod_php:二者冲突,必须禁用其一。运行sudo a2disconf php8.0-fpm并重启 Apache; - 使用了错误的 PHP 配置路径:Apache 加载的是
/etc/php/8.0/apache2/php.ini,而非 CLI 的/etc/php/8.0/cli/php.ini,修改后需重启 Apache; - 权限或 SELinux(WSL 或标准 Ubuntu 一般不启用,但若自定义系统需留意)导致模块无法加载。
重启 Apache 并测试:
sudo systemctl restart apache2 echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/test.php
然后访问 http://localhost/test.php。若仍失败,立即查看错误日志:
sudo tail -f /var/log/apache2/error.log
日志里常出现 Cannot load module /usr/lib/apache2/modules/libphp8.0.so(路径错)、undefined symbol: zend_string_init(版本不匹配)等提示,可据此精准定位。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











