在 Ubuntu 下调试 PHP 错误,通常从 开启错误显示、查看日志、确认 PHP 运行环境 这几步入手。下面按常见场景给你一个实用清单。
php.ini先找到你正在用的 php.ini:
php -i | grep "Loaded Configuration File"
常见路径:
/etc/php/8.1/apache2/php.ini/etc/php/8.1/cli/php.ini/etc/php/8.1/fpm/php.ini编辑对应文件:
sudo nano /etc/php/8.1/apache2/php.ini
修改或取消注释以下内容:
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
重启服务:
sudo systemctl restart apache2
# 或
sudo systemctl restart php8.1-fpm
在 PHP 文件顶部加:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
✅ 适合快速调试
❌ 生产环境不要用
sudo tail -f /var/log/apache2/error.log
PHP-FPM 日志:
sudo tail -f /var/log/php8.1-fpm.log
或:
sudo tail -f /var/log/nginx/error.log
sudo touch /var/log/php_errors.log
sudo chown www-data:www-data /var/log/php_errors.log
不同运行方式,错误位置不同:
| 运行方式 | 错误位置 |
|---|---|
| Apache + mod_php | apache2/error.log |
| Nginx + PHP-FPM | php-fpm.log / nginx/error.log |
| CLI | 直接输出或 /var/log/syslog |
查看 PHP 运行方式:
php -S localhost:8000
或:
php -i | grep "Server API"
通常是:
display_errors = Off✅ 解决:
Nginx 常见原因:
sudo systemctl status php8.1-fpm
PHP Parse error: syntax error
✅ 检查:
;{}display_errors = Off
log_errors = On
error_reporting = E_ALL
错误只写日志,不显示给用户。
✅ 强烈推荐:
var_dump() + dieerror_log(print_r($var, true))安装 Xdebug:
sudo apt install php8.1-xdebug
你可以直接贴:
我可以一步一步帮你定位 ✅