温馨提示×

怎么解读CentOS PHP日志

小樊
42
2026-07-20 16:44:20
栏目: 编程语言

解读 CentOS 上的 PHP 日志,核心思路是:
先找到日志在哪 → 再看日志类型 → 结合错误级别和上下文定位问题。下面按实战步骤说明。


一、PHP 日志一般存放在哪?

在 CentOS 上,PHP 日志常见位置取决于运行方式(PHP-FPM / Apache / CLI)。

1️⃣ PHP-FPM(最常见,Nginx + PHP)

/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

2️⃣ Apache + mod_php

/var/log/httpd/

常见文件:

  • error_log
  • access_log
tail -f /var/log/httpd/error_log

3️⃣ PHP 自定义错误日志(php.ini 配置)

error_log = /var/log/php_error.log

查看:

tail -f /var/log/php_error.log

4️⃣ PHP CLI(命令行)

CLI 通常 不写日志,错误直接输出到终端。


二、如何确认 PHP 日志路径?

1️⃣ 查看 php.ini

php -i | grep "Loaded Configuration File"

然后:

grep error_log /etc/php.ini

或(PHP 7/8 常见):

grep error_log /etc/php-fpm.d/www.conf

2️⃣ 用 PHP 代码确认

<?php
phpinfo();

查找:

  • error_log
  • log_errors
  • display_errors

三、PHP 日志常见格式解读

示例日志

[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_errors
  • 开启 log_errors

五、常见 PHP 错误场景解读

1️⃣ 内存不足

PHP Fatal error: Allowed memory size exhausted

✅ 解决:

memory_limit = 256M

2️⃣ 执行时间超时

Maximum execution time of 30 seconds exceeded

✅ 解决:

max_execution_time = 60

3️⃣ 权限问题

failed to open stream: Permission denied

✅ 解决:

chown -R nginx:nginx /var/www/html
chmod -R 755 /var/www/html

4️⃣ PHP-FPM 连不上

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 日志贴出来,我可以帮你逐行解读并给出解决方案。

0