Ubuntu 下 PHP 报错的原因很多,最常见的通常是 PHP 版本、模块缺失、权限或配置问题。下面我按**“快速定位 → 常见报错 → 解决方法”**的结构给你一个实用排查指南,你可以对照着来。
php -v
如果提示:
command not found
说明 PHP 没装或没加入 PATH。
安装(以 PHP 8.1 为例):
sudo apt update
sudo apt install php8.1 php8.1-cli
php your_script.php
查看错误日志:
sudo tail -n 50 /var/log/apache2/error.log
sudo tail -n 50 /var/log/nginx/error.log
sudo tail -n 50 /var/log/php8.1-fpm.log
✅ 把报错内容复制到搜索引擎,能解决 80% 问题。
Class 'PDO' not found
Call to undefined function curl_init()
sudo apt install php8.1-mysql php8.1-curl php8.1-mbstring php8.1-xml
常用模块:
php8.1-common
php8.1-mysql
php8.1-curl
php8.1-gd
php8.1-mbstring
php8.1-xml
php8.1-zip
安装后重启:
sudo systemctl restart apache2
# 或
sudo systemctl restart php8.1-fpm
.php 文件直接下载sudo apt install libapache2-mod-php8.1
sudo a2enmod php8.1
sudo systemctl restart apache2
确保:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
然后:
sudo systemctl restart nginx
sudo systemctl restart php8.1-fpm
Permission denied
Failed to open stream
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
生产环境默认关闭错误显示。
修改:
sudo nano /etc/php/8.1/apache2/php.ini
设置:
display_errors = On
error_reporting = E_ALL
重启服务 ✅
update-alternatives --display php
sudo update-alternatives --config php
| 现象 | 可能原因 |
|---|---|
| 命令 php 不存在 | 未安装 PHP |
| 页面空白 | PHP 错误未显示 |
| 下载 PHP 文件 | PHP 未与 Web 服务关联 |
| Class not found | 扩展未安装 |
| 502 Bad Gateway | PHP-FPM 未运行 |
| 403 Forbidden | 权限问题 |
你可以直接把:
lsb_release -a)贴出来,我可以 一步一步帮你定位到具体原因并给出命令。