解读 CentOS 上的 PHP 日志,核心思路是:
先找到日志在哪 → 再看日志类型 → 结合错误级别和上下文定位问题。下面按实战步骤说明。
在 CentOS 上,PHP 日志常见位置取决于运行方式(PHP-FPM / Apache / CLI)。
/var/log/php-fpm/
常见文件:
/var/log/php-fpm/error.log/var/log/php-fpm/www-error.log查看:
tail -f /var/log/php-fpm/www-error.log
/var/log/httpd/
常见文件:
error_logaccess_logtail -f /var/log/httpd/error_log
error_log = /var/log/php_error.log
查看:
tail -f /var/log/php_error.log
CLI 通常 不写日志,错误直接输出到终端。
php -i | grep "Loaded Configuration File"
然后:
grep error_log /etc/php.ini
或(PHP 7/8 常见):
grep error_log /etc/php-fpm.d/www.conf
<?php
phpinfo();
查找:
error_loglog_errorsdisplay_errors[10-Oct-2024 14:23:11 UTC] PHP Fatal error: Uncaught Error: Class 'User' not found in /var/www/html/index.php:12
| 部分 | 含义 |
|---|---|
[10-Oct-2024 14:23:11 UTC] |
时间 |
PHP Fatal error |
错误级别 |
Uncaught Error |
未捕获的错误 |
Class 'User' not found |
错误原因 |
/var/www/html/index.php:12 |
出错文件和行号 |
| 级别 | 含义 |
|---|---|
Notice |
提示,不推荐忽略 |
Warning |
警告,可能出问题 |
Fatal error |
致命错误,脚本终止 |
Parse error |
语法错误 |
Deprecated |
已废弃用法 |
✅ 生产环境:
display_errorslog_errorsPHP Fatal error: Allowed memory size exhausted
✅ 解决:
memory_limit = 256M
Maximum execution time of 30 seconds exceeded
✅ 解决:
max_execution_time = 60
failed to open stream: Permission denied
✅ 解决:
chown -R nginx:nginx /var/www/html
chmod -R 755 /var/www/html
connect() to unix:/run/php-fpm/www.sock failed
✅ 检查:
systemctl status php-fpm
# 1. 实时查看日志
tail -f /var/log/php-fpm/www-error.log
# 2. 重现问题
# 访问页面 / 执行脚本
# 3. 搜索关键字
grep -i error /var/log/php-fpm/www-error.log
grep -i fatal /var/log/php-fpm/www-error.log
display_errors = Off
log_errors = On
error_reporting = E_ALL
error_log = /var/log/php/php_error.log
logrotate 管理日志,防止磁盘爆满
如果你愿意,可以把 具体一段 PHP 日志贴出来,我可以帮你逐行解读并给出解决方案。