Linux下php-fpm的日志如何查看与分析
导读:一、Linux下PHP-FPM日志的查看方法 定位日志文件路径 PHP-FPM的日志文件通常位于/var/log/php-fpm/目录下(推荐路径),常见文件包括: error.log:记录错误信息(如权限问题、配置错误、代码异常);...
一、Linux下PHP-FPM日志的查看方法
-
定位日志文件路径
PHP-FPM的日志文件通常位于/var/log/php-fpm/目录下(推荐路径),常见文件包括:error.log:记录错误信息(如权限问题、配置错误、代码异常);access.log:记录所有PHP请求的访问信息(如请求时间、URI、状态码);www-error.log:记录与Web服务器(如Nginx/Apache)相关的错误(如文件未找到);slow.log:记录执行时间超过阈值的慢脚本(需手动开启)。
若路径不确定,可通过以下命令查找:
# 查找php-fpm.conf中的log_path配置 cat /etc/php-fpm.d/www.conf | grep log_path # 全局搜索php-fpm.conf文件 sudo find / -name php-fpm.conf -
常用查看命令
- 实时查看最新日志:使用
tail -f命令跟踪日志文件的实时更新,例如:sudo tail -f /var/log/php-fpm/error.log # 实时查看错误日志 sudo tail -f /var/log/php-fpm/access.log # 实时查看访问日志 - 查看完整日志内容:使用
cat或less命令(适合查看历史日志),例如:sudo cat /var/log/php-fpm/error.log # 查看完整错误日志 sudo less /var/log/php-fpm/access.log # 分页查看访问日志(按q退出) - 过滤特定日志:使用
grep命令筛选关键词(如错误、特定IP),例如:sudo grep 'error' /var/log/php-fpm/error.log # 筛选错误信息 sudo grep '192.168.1.100' /var/log/php-fpm/access.log # 筛选特定IP的访问记录
- 实时查看最新日志:使用
-
日志轮转配置(避免日志过大)
使用logrotate工具自动管理日志文件的轮转、压缩和归档。创建/etc/logrotate.d/php-fpm配置文件,添加以下内容:/var/log/php-fpm/*.log { daily # 每天轮转 missingok # 文件不存在时不报错 rotate 7 # 保留7个归档文件 compress # 压缩归档文件(如.gz) delaycompress # 延迟压缩(避免影响当前日志) notifempty # 日志为空时不轮转 create 0640 www-data adm # 创建新日志文件的权限和所有者(根据实际用户调整) sharedscripts # 所有日志轮转完成后执行脚本 postrotate if [ -f /var/run/php/php-fpm.sock ]; then kill -USR2 $(cat /var/run/php/php-fpm.pid) # 通知php-fpm重新打开日志文件 fi endscript }测试配置是否正确:
sudo logrotate -d /etc/logrotate.d/php-fpm(模拟运行),无误后启用自动轮转:sudo systemctl enable logrotate & & sudo systemctl start logrotate。
二、Linux下PHP-FPM日志的分析技巧
-
错误日志分析要点
- 权限问题:查找“Permission denied”“Cannot open file”等关键词,解决方法:确保PHP-FPM进程用户(如
www-data)对相关文件/目录有读写权限:sudo chown -R www-data:www-data /path/to/application # 修改所有权 sudo chmod -R 755 /path/to/application # 设置合理权限 - 配置错误:查找“Invalid configuration directive”“syntax error”等关键词,解决方法:检查
php-fpm.conf或www.conf中的语法(如listen指令是否正确,端口/套接字路径是否存在)。 - 内存不足:查找“Out of memory”“Killed process”等关键词,解决方法:调整
pm.max_children(子进程最大数量)、pm.start_servers(启动时的子进程数)等参数(如将pm.max_children从50调整为100),避免内存耗尽。 - 代码错误:查找“Fatal error”“Uncaught Exception”等关键词,解决方法:根据错误信息定位PHP脚本中的问题(如未定义函数、数据库连接失败),修复代码后重启php-fpm:
sudo systemctl restart php{ version} -fpm。
- 权限问题:查找“Permission denied”“Cannot open file”等关键词,解决方法:确保PHP-FPM进程用户(如
-
访问日志分析技巧
- 高频请求统计:使用
awk命令统计某个URI的访问次数,例如:sudo awk '$7 == "/index.php" { count++} END { print "Total requests:", count} ' /var/log/php-fpm/access.log - 状态码分析:统计不同HTTP状态码的出现次数(如200成功、404未找到、500服务器错误),例如:
sudo awk '{ status[$9]++} END { for (s in status) print s, status[s]} ' /var/log/php-fpm/access.log - 请求时间分布:提取请求时间(通常在第4列),分析高峰时段,例如:
sudo awk '{ print $4} ' /var/log/php-fpm/access.log | cut -d '[' -f 2 | cut -d ':' -f 1 | sort | uniq -c
- 高频请求统计:使用
-
慢日志分析与性能优化
- 开启慢日志:在
www.conf中设置慢日志参数,例如:修改后重启php-fpm:slowlog = /var/log/php-fpm/slow.log # 慢日志文件路径 request_slowlog_timeout = 5s # 执行时间超过5秒的脚本记录到慢日志sudo systemctl restart php{ version} -fpm。 - 分析慢日志:使用
cat或less查看慢日志,重点关注“script filename”(脚本路径)、“request time”(执行时间)、“memory usage”(内存使用),例如:针对慢脚本进行优化:如优化SQL查询(添加索引、减少查询次数)、缓存频繁访问的数据(如使用Redis)、拆分大型脚本为多个小脚本。sudo cat /var/log/php-fpm/slow.log
- 开启慢日志:在
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux下php-fpm的日志如何查看与分析
本文地址: https://pptw.com/jishu/737734.html
