温馨提示×

如何提取CentOS PHP日志信息

小樊
44
2025-11-29 21:55:38
栏目: 编程语言

定位日志文件位置

  • 先确认运行方式:PHP-FPMApache mod_phpNginx + PHP-FPM,不同方式的日志路径不同。
  • 常见路径与用途如下:
运行方式 访问日志 错误日志 其他日志
PHP-FPM /var/log/php-fpm/access.log(需开启) /var/log/php-fpm/error.log/run/php-fpm/www-error.log /var/log/php-fpm/slowlog.log(需开启慢日志)
Apache + mod_php /var/log/httpd/access_log /var/log/httpd/error_log
Nginx + PHP-FPM /var/log/nginx/access.log /var/log/nginx/error.log PHP-FPM 错误仍看 php-fpm 日志
  • 配置文件中的关键指令:
    • PHP-FPM:查看 /etc/php-fpm.d/www.conf 中的 error_logaccess.logslowlog 等指令。
    • Apache:查看 /etc/httpd/conf/httpd.conf 中的 ErrorLogCustomLog
    • Nginx:查看 /etc/nginx/nginx.conf 中的 error_logaccess_log
    • 也可在 php.ini 中查看 error_log 指令以确认脚本错误日志路径。

快速查看与实时跟踪

  • 实时查看 PHP-FPM 错误日志:
    • 命令:sudo tail -f /var/log/php-fpm/error.log
  • 查看 Web 服务器错误日志:
    • Apache:sudo tail -f /var/log/httpd/error_log
    • Nginx:sudo tail -f /var/log/nginx/error.log
  • 查看 Web 访问日志(定位请求来源、UA、状态码等):
    • Apache:sudo tail -f /var/log/httpd/access_log
    • Nginx:sudo tail -f /var/log/nginx/access.log
  • 使用 systemd 查看服务日志:
    • PHP-FPM:sudo journalctl -u php-fpm -f
    • Apache:sudo journalctl -u httpd -f
    • Nginx:sudo journalctl -u nginx -f
  • 若不确定日志路径,可全局搜索:
    • sudo find / -type f -name "error_log"
    • sudo grep -r "error_log" /etc/php* /etc/httpd /etc/nginx /usr/local/etc/php* 2>/dev/null

按时间范围与关键字提取

  • 按时间范围提取(示例:提取 2025-11-29 10:00:0011:00:00 的 PHP-FPM 错误):
    • sudo awk '/2025-11-29 10:00:00/,/2025-11-29 11:00:00/' /var/log/php-fpm/error.log
  • 按关键字过滤(如 Fatal、Parse error):
    • sudo grep -i "Fatal\|Parse error" /var/log/php-fpm/error.log
  • 统计某时间段内错误数量:
    • sudo awk '/2025-11-29 10:00:00/,/2025-11-29 11:00:00/' /var/log/php-fpm/error.log | grep -i "error" | wc -l
  • 提取访问日志中 POST 请求的 URI:
    • sudo grep -oP 'POST \K[^ ]+' /var/log/nginx/access.log
  • 分析访问量最高页面(按第 7 列 URI 统计):
    • sudo awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
  • 提示:日志时间格式可能为 YYYY-MM-DD 或包含毫秒,必要时调整 awk 的时间匹配模式。

确保日志已启用与正确配置

  • php.ini 中开启错误日志并指定路径:
    • error_reporting = E_ALL
    • display_errors = Off
    • log_errors = On
    • error_log = /var/log/php-fpm/error.log
  • PHP-FPM(/etc/php-fpm.d/www.conf) 中确认:
    • error_log = /var/log/php-fpm/error.log
    • 如需访问日志:access.log = /var/log/php-fpm/access.log
    • 如需慢日志:slowlog = /var/log/php-fpm/slowlog.logrequest_slowlog_timeout = 5s
  • 修改后重启服务:
    • sudo systemctl restart php-fpm
    • Web 服务器:sudo systemctl restart httpdsudo systemctl restart nginx
  • 若仍找不到日志,可在站点根目录临时放置 phpinfo.php
    • <?php phpinfo(); ?>
    • 访问该文件并查找 error_log 项的实际路径。

集中化与可视化分析

  • 轻量方案:部署 LogAnalyzer(基于 Web 的 syslog 分析),通过 httpd + PHP + MariaDB 快速搭建,导入日志后可搜索、过滤与简单统计。
  • 进阶方案:使用 ELK Stack(Elasticsearch + Logstash + Kibana) 集中收集 /var/log/php-fpm//var/log/httpd//var/log/nginx/ 等日志,在 Kibana 中建立索引模式与可视化仪表盘,实现多维查询与告警。

0