发布于2026-07-11 阅读(0)
扫一扫,手机访问
PHP-FPM的错误日志,是排查Web服务故障的第一手资料。很多开发者遇到网站白屏、502、500错误时,第一反应是去翻Nginx日志,其实更直接、信息量更大的战场,往往就在PHP-FPM自己的日志里。下面就从几个核心环节,把这块内容拆开揉碎讲清楚。
要分析问题,先得找到日志文件在哪儿。PHP-FPM的错误日志路径,通常由配置文件里的error_log指令决定。最常见的位置包括这几个:

/var/log/php-fpm/error.log/var/log/php-fpm/www-error.log/var/log/php7.x-fpm.log(x是PHP版本号,比如7.4、8.2)如果一时记不清具体位置,一个find命令就能搞定:
sudo find /var/log -name "*php-fpm*log"
要是还找不到,那就直接去主配置文件(路径一般是/etc/php/{version}/fpm/php-fpm.conf)或者pool配置文件(/etc/php/{version}/fpm/pool.d/www.conf)里,搜一下error_log这个指令,路径就在那儿。
日志文件找到了,怎么高效地看?光用cat从头翻到尾,效率太低。下面这几个命令,基本覆盖了日常分析的所有场景。
1. 实时追踪最新日志
生产环境出了问题,最迫切的需求往往是“看看现在发生了什么”。tail -f就是为此而生:
sudo tail -f /var/log/php-fpm/error.log
它会像实时滚动的监控屏一样,把新写入的日志行逐条推送出来,非常适合现场排查。
2. 精准过滤特定错误
日志文件如果很大,全量阅读不现实。用grep按关键词“捞”出感兴趣的条目,是基本功:
sudo grep -i "error" /var/log/php-fpm/error.log # 只看错误信息
sudo grep -i "fatal" /var/log/php-fpm/error.log # 只看致命错误
sudo grep -i "warning" /var/log/php-fpm/error.log # 只看警告信息
3. 统计高频错误,揪出“元凶”
有时候同一个错误反复出现,手动翻看容易漏掉。把grep、sort、uniq组合起来,就能按出现频率排序,快速定位最严重的问题:
sudo grep "PHP Fatal error" /var/log/php-fpm/error.log | sort | uniq -c | sort -rn
4. 慢日志分析(性能瓶颈排查)
如果开启了慢日志(需要提前配置slowlog参数),它记录的是执行时间超过阈值的请求,对性能调优极有价值:
sudo tail -f /var/log/php-fpm/www-slow.log # 注意路径需与实际配置一致
想找出“最慢的top10”,可以用awk配合sort:
sudo awk '/^.*script_filename.*$/{print $0}' /var/log/php-fpm/www-slow.log | sort -k 10 -nr | head -10
知道怎么看了,还得看得懂。下面几种错误类型,是PHP-FPM日志里最高频的“熟面孔”。
1. PHP语法/运行时错误
这是最常见的一类,日志中会以PHP Fatal error、PHP Warning或PHP Notice等形式出现。比如:
[01-Sep-2023 12:34:56] PHP Fatal error: Uncaught Error: Call to undefined function foo() in /var/www/my_script.php:12
Stack trace:
#0 /var/www/my_script.php(12): foo()
#1 {main}
thrown in /var/www/my_script.php on line 12
信息很明确:/var/www/my_script.php的第12行,调用了一个根本不存在的函数foo(),直接导致脚本崩溃。
2. 权限问题
日志中间出现Permission denied,基本可以断定是PHP-FPM进程用户(通常是www-data)没有权限访问脚本、目录或套接字文件。例如:
[01-Sep-2023 12:35:00] WARNING: [pool www] child 1234 said into stderr: "ERROR: Unable to open primary script: /var/www/html/index.php (Permission denied)"
这说的就是www-data用户打不开/var/www/html/index.php这个文件。
3. 端口/套接字冲突
出现Address already in use或socket already in use,说明PHP-FPM要用的端口或套接字被别的进程占了:
[01-Sep-2023 12:35:05] ERROR: unable to bind listening socket for address '/run/php/php7.4-fpm.sock': Address already in use
[01-Sep-2023 12:35:05] ERROR: FPM initialization failed
套接字路径/run/php/php7.4-fpm.sock被占用,PHP-FPM自然启动不了。
4. 资源限制
这类错误通常以pm.max_children reached、Allowed memory size exhausted或unable to create new process的形式出现:
[01-Sep-2023 12:35:10] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it
意思是当前进程数已经撑满了配置上限50,可以考虑把这个值调大,来应对更高的并发。
5. 扩展加载失败
日志中间出现Unable to load dynamic library,十有八九是PHP扩展没装好或者配错了:
[01-Sep-2023 12:35:15] WARNING: [pool www] child 1235 said into stderr: "PHP Startup: Unable to load dynamic library 'redis.so' (tried: /usr/lib/php/20210902/redis.so (/usr/lib/php/20210902/redis.so: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/redis.so.so (/usr/lib/php/20210902/redis.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0"
redis.so文件找不到,要么是没装redis扩展,要么是路径配错了。
知道问题在哪儿了,接下来就是动手修。针对上面几类高频错误,解法都比较成熟。
1. 权限问题
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
www.conf里的listen.owner和listen.group是否与进程用户一致:sudo nano /etc/php/{version}/fpm/pool.d/www.conf
# 确认这两行:
listen.owner = www-data
listen.group = www-data
sudo systemctl restart php{version}-fpm
2. 端口/套接字冲突
netstat或lsof确认是谁占用了资源:sudo netstat -tulnp | grep 9000
sudo lsof /run/php/php7.4-fpm.sock
sudo kill -9
www.conf里换个端口或套接字路径:listen = 127.0.0.1:9001 # 或者换个路径
listen = /run/php/php7.4-fpm.sock
3. 资源限制
sudo nano /etc/php/{version}/fpm/pool.d/www.conf
pm.max_children = 50 # 根据实际情况调
memory_limit则在php.ini里修改:sudo nano /etc/php/{version}/fpm/php.ini
memory_limit = 256M
4. 扩展加载失败
php -m | grep redis
sudo apt-get install php{version}-redis
php.ini里配了无效的扩展行,可以先注释掉,或者把扩展重新装一遍。5. 配置文件语法错误
sudo php-fpm{version} -t
以上这些内容,基本覆盖了日常运维中PHP-FPM日志分析的绝大部分场景。掌握了这些,排查问题就不再是摸着石头过河,而是有章可循的标准化操作了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8