在 Ubuntu 上排查 PHP 错误,通常分几个层面:PHP 本身、Web 服务器、代码层面、日志。下面给你一套实用排查思路,从最常见到进阶。
php -v
正常会显示 PHP 版本。如果报错,多半是没装或路径不对。
which php
php --ini
常见路径:
/etc/php/8.x/cli/php.ini
/etc/php/8.x/apache2/php.ini
/etc/php/8.x/fpm/php.ini
display_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
重启服务:
sudo systemctl restart apache2
# 或
sudo systemctl restart php8.x-fpm
tail -f /var/log/apache2/error.log
apache2ctl -M | grep php
tail -f /var/log/nginx/error.log
tail -f /var/log/php8.x-fpm.log
systemctl status php8.x-fpm
ini_set('display_errors', 1);
error_reporting(E_ALL);
@ 抑制try/catch 吞掉异常set_exception_handlersudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
# 看错误日志
tail -f /var/log/apache2/error.log
# 或
tail -f /var/log/nginx/error.log
# 看 PHP 日志
tail -f /var/log/php_errors.log
# 看服务状态
systemctl status apache2
systemctl status php8.x-fpm
| 现象 | 原因 |
|---|---|
| 500 错误 | 代码错误 / php.ini / 权限 |
| 502 | PHP-FPM 未启动 |
| 空白页 | display_errors 关闭 |
| 403 | 权限 / index 文件 |
| 404 | 路径错误 / rewrite |
你可以直接贴:
我可以一步一步带你定位。