一、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日志的分析技巧
错误日志分析要点
www-data)对相关文件/目录有读写权限:sudo chown -R www-data:www-data /path/to/application # 修改所有权
sudo chmod -R 755 /path/to/application # 设置合理权限
php-fpm.conf或www.conf中的语法(如listen指令是否正确,端口/套接字路径是否存在)。pm.max_children(子进程最大数量)、pm.start_servers(启动时的子进程数)等参数(如将pm.max_children从50调整为100),避免内存耗尽。sudo systemctl restart php{version}-fpm。访问日志分析技巧
awk命令统计某个URI的访问次数,例如:sudo awk '$7 == "/index.php" {count++} END {print "Total requests:", count}' /var/log/php-fpm/access.log
sudo awk '{status[$9]++} END {for (s in status) print s, status[s]}' /var/log/php-fpm/access.log
sudo awk '{print $4}' /var/log/php-fpm/access.log | cut -d '[' -f 2 | cut -d ':' -f 1 | sort | uniq -c
慢日志分析与性能优化
www.conf中设置慢日志参数,例如:slowlog = /var/log/php-fpm/slow.log # 慢日志文件路径
request_slowlog_timeout = 5s # 执行时间超过5秒的脚本记录到慢日志
修改后重启php-fpm:sudo systemctl restart php{version}-fpm。cat或less查看慢日志,重点关注“script filename”(脚本路径)、“request time”(执行时间)、“memory usage”(内存使用),例如:sudo cat /var/log/php-fpm/slow.log
针对慢脚本进行优化:如优化SQL查询(添加索引、减少查询次数)、缓存频繁访问的数据(如使用Redis)、拆分大型脚本为多个小脚本。