解决 PHP 日志报错,一般分 “看懂错误 → 定位原因 → 对症处理” 三步。下面给你一套通用排查流程 + 常见错误示例 + 解决方案,基本能覆盖 90% 的情况。
# Nginx + PHP-FPM
/var/log/php-fpm/error.log
/var/log/nginx/error.log
# Apache
/var/log/apache2/error.log
# PHP 自身错误日志
/var/log/php_errors.log
php -i | grep "error_log"
关键配置:
display_errors = Off # 生产环境关闭
log_errors = On
error_log = /var/log/php_errors.log
error_reporting = E_ALL
日志示例:
Parse error: syntax error, unexpected '}' in /var/www/test.php on line 20
✅ 原因
✅ 解决
日志示例:
Fatal error: Uncaught Error: Class 'User' not found
✅ 原因
✅ 解决
require_once 'User.php';
或:
composer dump-autoload
日志示例:
Warning: include(xxx.php): failed to open stream
✅ 原因
✅ 解决
include __DIR__ . '/xxx.php';
日志示例:
Notice: Undefined index: name
✅ 原因
✅ 解决
$name = $_POST['name'] ?? '';
日志示例:
Allowed memory size of 134217728 bytes exhausted
✅ 解决
memory_limit = 256M
或代码中:
ini_set('memory_limit', '256M');
日志示例:
Maximum execution time of 30 seconds exceeded
✅ 解决
max_execution_time = 60
日志示例:
Permission denied in /var/www/html/cache
✅ 解决
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
error_reporting(E_ALL);
ini_set('display_errors', 1);
⚠️ 生产环境记得关
tail -n 50 /var/log/php_errors.log
把错误内容直接复制搜索,例如:
PHP Fatal error: Uncaught PDOException
你可以直接贴出:
我可以 逐行帮你分析并给出修改代码 ✅