在 Ubuntu 上定位 PHP 错误,通常可以按下面几个步骤来做,从最容易看到错误到更底层排查。
如果是命令行或网页看不到错误,先确认 PHP 是否关闭了报错。
php -i | grep display_errors
php -i | grep error_reporting
临时测试:
php -d display_errors=1 -d error_reporting=E_ALL your_script.php
网页环境可在脚本最前面加:
ini_set('display_errors', 1);
error_reporting(E_ALL);
⚠️ 生产环境不建议长期开启 display_errors
php --ini
php -i | grep error_log
常见位置:
/var/log/php/php_errors.log/var/log/apache2/error.log/var/log/nginx/error.log实时查看:
tail -f /var/log/php/php_errors.log
sudo tail -f /var/log/apache2/error.log
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/php*/fpm/error.log
如果看到 Permission denied、File not found,通常是:
root / fastcgi 路径配置问题systemctl status php-fpm
# 或
systemctl status php8.1-fpm
pool www 权限问题connect() failed (111: Connection refused) → PHP-FPM 没启动Primary script unknown → SCRIPT_FILENAME 配错php your_script.php
php -l your_script.php # 语法检查
php -d error_reporting=E_ALL your_script.php
适合逻辑错误、性能问题。
安装:
sudo apt install php-xdebug
配置:
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
配合 VS Code / PHPStorm 断点调试。
✅ PHP 是否安装
php -v
✅ Web 服务是否运行
systemctl status nginx
systemctl status apache2
✅ PHP 模块是否启用
php -m
✅ 文件权限
ls -l /var/www/html
你可以补充:
我可以直接帮你定位是哪一层的问题。