ubuntu 22.04 安装 php 8.1 后常见问题为 web 不解析 .php 文件,根源是 apache 模块未正确安装或启用、cli 与 web 配置分离、nginx+php-fpm 连接失败等,需统一安装 libapache2-mod-php8.1、启用 php8.1 模块、检查 apache2/php.ini 扩展配置并重启服务。

Ubuntu 22.04 安装 PHP 8.1 后,常见问题不是“装不上”,而是“看似装上了,但用不了”——比如访问 .php 文件空白、下载源码、返回 404,或 CLI 正常但 Web 不解析。根本原因集中在模块版本错配、Apache/Nginx 集成未生效、扩展缺失或配置残留。以下是真实高频报错及对应修复方法。
PHP 文件不执行,浏览器直接下载或显示空白页
这是最典型的现象,说明 Apache 没有把 .php 请求交给 PHP 解析器处理。
- 确认是否安装了正确的 Apache 模块:
sudo apt install libapache2-mod-php8.1(不能混用libapache2-mod-php8.0) - 显式启用该模块:
sudo a2enmod php8.1(仅安装不等于启用) - 检查是否已加载:
apache2ctl -M | grep php,应输出php8_module (shared) - 确保
/etc/apache2/mods-enabled/php8.1.load存在,且内容指向/usr/lib/apache2/modules/libphp8.1.so - 重启服务:
sudo systemctl restart apache2
命令行可用,但 phpinfo() 页面不显示扩展
例如 php -m | grep mysqli 有输出,但网页里看不到 MySQLi 模块,说明扩展未被 Web SAPI 加载。
- PHP CLI 和 Apache 使用的是两套配置目录:
CLI 配置路径通常为/etc/php/8.1/cli/php.ini,
Apache 模块使用的是/etc/php/8.1/apache2/php.ini - 检查扩展是否在
apache2配置中启用:grep -E "^(extension|zend_extension)" /etc/php/8.1/apache2/php.ini | grep -v ";" - 常用扩展如
mysqli、pdo_mysql、opcache默认可能被注释,需手动取消注释 - 修改后务必重启 Apache:
sudo systemctl restart apache2
安装时报 “Unable to locate package php8.1”
说明软件源未更新或系统版本不匹配,不是包名写错。
- 先运行:
sudo apt update(必须,否则缓存旧索引) - 确认系统确实是 Ubuntu 22.04:
lsb_release -sc应输出jammy - 检查是否误启用了已失效的第三方源(如针对旧版 Ubuntu 的 PPA),可临时注释
/etc/apt/sources.list.d/*.list中非官方条目再试 - 若仍失败,手动搜索验证:
apt search ^php8.1,看是否有结果
与 Nginx + PHP-FPM 搭配时 502 Bad Gateway
表示 Nginx 找不到或连不上 PHP-FPM 进程。
- 确认 FPM 服务正在运行:
sudo systemctl status php8.1-fpm(状态应为 active (running)) - 检查监听方式是否匹配:默认是 Unix socket(
/run/php/php8.1-fpm.sock),Nginx 配置中fastcgi_pass必须一致 - 验证 socket 权限:
ls -l /run/php/php8.1-fpm.sock,属主应为www-data,且 Nginx worker 进程也以该用户运行 - 若改用 TCP 监听(如
127.0.0.1:9000),需同步修改/etc/php/8.1/fpm/pool.d/www.conf中的listen和权限相关参数
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











