在 CentOS 上,PHP 日志的解读主要看日志在哪里、日志格式是什么、常见错误代表什么意思。下面按实用角度给你讲清楚。
位置由 php.ini 决定:
php --ini
# 或
php -i | grep error_log
常见路径:
/var/log/php_errors.log/var/log/php-fpm/error.logstorage/logs/laravel.log)查看:
tail -f /var/log/php_errors.log
如果你用 Nginx + PHP-FPM:
/var/log/php-fpm/error.log
/var/log/php-fpm/www-error.log
查看:
tail -100 /var/log/php-fpm/error.log
/var/log/nginx/error.log/var/log/httpd/error_log典型 PHP 错误日志示例:
[2024-01-12 10:23:45] PHP Warning: fopen(/data/a.txt): failed to open stream: Permission denied in /var/www/test.php on line 20
结构:
[时间] 错误级别: 错误信息 in 文件 on line 行号
| 级别 | 含义 | 是否致命 |
|---|---|---|
| Notice | 小问题(未定义变量等) | 否 |
| Warning | 可恢复错误 | 否 |
| Error | 致命错误,脚本终止 | 是 |
| Fatal Error | 严重错误 | 是 |
| Parse Error | 语法错误 | 是 |
| Deprecated | 即将废弃的用法 | 否 |
Permission denied in /var/www/test.php
✅ 解决:
chown -R nginx:nginx /var/www
chmod -R 755 /var/www
PHP Fatal error: Allowed memory size exhausted
✅ 解决:
memory_limit = 256M
Maximum execution time of 30 seconds exceeded
✅ 解决:
max_execution_time = 120
failed to open stream: No such file or directory
✅ 检查:
WARNING: [pool www] server reached pm.max_children
✅ 解决:
pm.max_children = 50
# 实时看日志
tail -f /var/log/php-fpm/error.log
# 搜索错误
grep -i error /var/log/php_errors.log
# 查看 PHP 配置
php -i | grep error
如果你愿意,可以把具体的一条 PHP 日志贴出来,我可以直接帮你逐字解读并给出解决方案。