Debian下PHP日志查看与分析
一 日志位置与确认
| 场景 | 日志文件 | 说明 |
|---|---|---|
| Apache + mod_php | /var/log/apache2/error.log | Apache错误日志,常包含PHP致命错误、解析错误等 |
| Nginx + PHP-FPM | /var/log/nginx/error.log | Nginx错误日志,常包含FastCGI/PHP-FPM相关错误 |
| PHP-FPM 进程日志 | /var/log/php-fpm/error.log(路径可在**/etc/php/版本号/fpm/pool.d/www.conf的error_log**项配置) | PHP-FPM自身运行与子进程错误 |
| PHP-FPM 访问日志 | /var/log/php-fpm/access.log(可选,亦在pool配置中) | 记录PHP-FPM请求信息 |
| PHP 自身错误日志 | /var/log/php_errors.log 或 /var/log/php/版本号-fpm.log(由php.ini的error_log指定) | 由PHP直接写入的错误日志 |
| CLI 运行日志 | 由php.ini的error_log指定 | 命令行执行PHP脚本时的错误输出 |
php --inigrep -E '^(error_log|access_log)' /etc/php/*/fpm/pool.d/www.conf二 查看与实时监控
sudo tail -f /var/log/apache2/error.logsudo tail -f /var/log/nginx/error.logsudo tail -f /var/log/php-fpm/error.logsudo journalctl -u php*-fpm.service -f(按实际服务名过滤)grep -i "error\|fatal\|warning" /var/log/php-fpm/error.logless /var/log/php-fpm/error.loggrep "Fatal error" /var/log/php-fpm/error.log | grep "2025-11-27 10:3[0-9]" | wc -lgrep -o 'in /[^ ]\+ on line [0-9]\+' /var/log/php-fpm/error.log | sort | uniq -c | sort -nr。三 配置与开启日志
error_reporting = E_ALL、log_errors = On、display_errors = Off、error_log = /var/log/php_errors.logsudo systemctl restart apache2)。php_admin_flag[log_errors] = on、php_admin_value[error_log] = /var/log/php-fpm/error.logcatch_workers_output = yessudo systemctl restart php**版本号**-fpmErrorLog ${APACHE_LOG_DIR}/error.log、LogLevel warnerror_log /var/log/nginx/error.log warn; access_log /var/log/nginx/access.log combined;error_log("msg", 3, "/path/to/app.log");写入业务或调试日志(注意目录权限与磁盘空间)。四 日志分析与排错流程
display_errors = On并结合php -l检查语法;上线务必关闭显示错误,仅记录日志。五 日志轮转与长期分析
/var/log/php-fpm/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload php*-fpm.service > /dev/null 2>&1 || true
endscript
}
grep/awk/sed做统计报表;中大型建议引入ELK Stack(Elasticsearch, Logstash, Kibana)或Graylog进行集中采集、检索与可视化。