根本原因是apache未将.php文件交给php解析,需先确认php8_module是否加载并启用、addhandler配置是否存在,再开启display_errors和error_reporting强制报错,并检查bom、语法及日志。

Ubuntu 安装 PHP 8 后页面显示空白,根本原因不是 PHP 没装好,而是 Web 服务器(通常是 Apache)没把 .php 文件交给 PHP 解析——它可能当纯文本返回、直接下载、或压根没处理。解决要分两层:先确认 PHP 是否被 Web 服务器调用,再确认 PHP 自身是否执行出错。
检查 Apache 是否加载并启用 PHP 8 模块
PHP 命令行能运行(php -v 正常),不代表 Apache 能用它。关键看模块是否加载:
- 运行
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 - 若同时启用了
php8.0-fpm,需禁用冲突配置:sudo a2disconf php8.0-fpm
确认 Apache 把 .php 当作可执行脚本处理
模块加载了,还得告诉 Apache 遇到 .php 文件时交给 PHP 执行:
- 搜索配置:
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)或虚拟主机配置中 - 注意:Apache 加载的是
/etc/php/8.0/apache2/php.ini,不是 CLI 的cli/php.ini,改错位置无效
让 PHP 报错信息显示出来
即使配置正确,PHP 默认也会静默吞掉错误,导致空白页。必须强制暴露问题:
- 编辑
/etc/php/8.0/apache2/php.ini,设:display_errors = Onerror_reporting = E_ALLlog_errors = Onerror_log = /var/log/php_errors.log - 在出问题的 PHP 文件最开头(任何空格、BOM、换行之前)插入:
<?php error_reporting(E_ALL); ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); ?> - 检查文件编码是否为 UTF-8 无 BOM(VS Code 右下角选“UTF-8”而非“UTF-8 with BOM”)
- 用命令行检测语法:
php -l index.php,有错会明确提示哪一行
验证与收尾
做完以上步骤后:
- 重启服务:
sudo systemctl restart apache2 - 新建测试文件:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/test.php - 访问
http://localhost/test.php—— 能显示 PHP 信息页,说明环境通了;若仍空白,立刻查日志:sudo tail -f /var/log/apache2/error.log和sudo tail -f /var/log/php_errors.log
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











