在 Ubuntu 上配置 PHP 失败,通常不是“某一个原因”,而是环境、版本、依赖或配置不匹配的综合结果。下面我按最常见失败原因 → 排查方法 → 解决思路来系统说明,你可以逐条对照。
Ubuntu 官方仓库只维护部分 PHP 版本。
现象示例:
E: Unable to locate package php8.2
对照表(简化):
| Ubuntu 版本 | 默认 PHP |
|---|---|
| 20.04 | 7.4 |
| 22.04 | 8.1 |
| 24.04 | 8.3 |
✅ 解决方式:使用 ondrej PPA(最常用)
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2
PHP 本身 ≠ 网站可用,需要 PHP-FPM 或 mod_php
php -v 正常
访问 .php 却下载 / 空白
✅ 检查是否安装:
sudo apt install libapache2-mod-php
# 或
sudo apt install php8.2-fpm
✅ Apache 启用模块
sudo a2enmod php8.2
sudo systemctl restart apache2
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
❌ 错误示例:
✅ 检查:
systemctl status php8.2-fpm
典型报错:
Class 'PDO' not found
undefined function mysqli_connect()
✅ 安装扩展:
sudo apt install php8.2-mysql php8.2-curl php8.2-mbstring
✅ 查看已加载扩展:
php -m
php -v 正常,但 phpinfo() 无内容原因:
.php✅ 排查:
ls /etc/apache2/mods-enabled/ | grep php
原因:
✅ 检查:
ls /run/php/
systemctl restart php8.2-fpm
Permission denied
✅ 修复:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
运行以下命令,看哪一项异常:
php -v
systemctl status apache2
systemctl status php8.2-fpm
ls /etc/php/
cat /var/log/apache2/error.log
cat /var/log/nginx/error.log
| 用途 | 正确方式 |
|---|---|
| 学习 PHP | php -S localhost:8000 |
| Apache | libapache2-mod-php |
| Nginx | php-fpm + fastcgi |
| Laravel | PHP-FPM + 扩展 |
你可以直接贴:
lsb_release -a
php -v
我可以一步一步给你定制修复命令。