定位日志文件位置

先确认运行方式:PHP-FPM、Apachemod_php或Nginx+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.logPHP-FPM错误仍看php-fpm日志

配置文件中的关键指令:

PHP-FPM:查看/etc/php-fpm.d/www.conf中的error_log、access.log、slowlog等指令。

Apache:查看/etc/httpd/conf/httpd.conf中的ErrorLog、CustomLog。

Nginx:查看/etc/nginx/nginx.conf中的error_log、access_log。

也可在php.ini中查看error_log指令以确认脚本错误日志路径。

快速查看与实时跟踪

实时查看PHP-FPM错误日志:

命令:

sudotail-f/var/log/php-fpm/error.log

查看Web服务器错误日志:

Apache:

sudotail-f/var/log/httpd/error_log

Nginx:

sudotail-f/var/log/nginx/error.log

查看Web访问日志(定位请求来源、UA、状态码等):

Apache:

sudotail-f/var/log/httpd/access_log

Nginx:

sudotail-f/var/log/nginx/access.log

使用systemd查看服务日志:

PHP-FPM:

sudojournalctl-uphp-fpm-f

Apache:

sudojournalctl-uhttpd-f

Nginx:

sudojournalctl-unginx-f

若不确定日志路径,可全局搜索:

sudofind/-typef-name"error_log"

sudogrep-r"error_log"/etc/php*/etc/httpd/etc/nginx/usr/local/etc/php*2>/dev/null

按时间范围与关键字提取

按时间范围提取(示例:提取2025-11-2910:00:00到11:00:00的PHP-FPM错误):

sudoawk'/2025-11-2910:00:00/,/2025-11-2911:00:00/'/var/log/php-fpm/error.log

按关键字过滤(如Fatal、Parseerror):

sudogrep-i"Fatal\|Parseerror"/var/log/php-fpm/error.log

统计某时间段内错误数量:

sudoawk'/2025-11-2910:00:00/,/2025-11-2911:00:00/'/var/log/php-fpm/error.log|grep-i"error"|wc-l

提取访问日志中POST请求的URI:

sudogrep-oP'POST\K[^]+'/var/log/nginx/access.log

分析访问量最高页面(按第7列URI统计):

sudoawk'{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.log
request_slowlog_timeout=5s

修改后重启服务:

sudosystemctlrestartphp-fpm

Web服务器:

sudosystemctlrestarthttpd
sudosystemctlrestartnginx

若仍找不到日志,可在站点根目录临时放置phpinfo.php:

访问该文件并查找error_log项的实际路径。

集中化与可视化分析

轻量方案:部署LogAnalyzer(基于Web的syslog分析),通过httpd+PHP+MariaDB快速搭建,导入日志后可搜索、过滤与简单统计。

进阶方案:使用ELKStack(Elasticsearch+Logstash+Kibana)集中收集/var/log/php-fpm/、/var/log/httpd/、/var/log/nginx/等日志,在Kibana中建立索引模式与可视化仪表盘,实现多维查询与告警。