PHP-FPM 在 Ubuntu 上的错误排查技巧
一 快速定位与基础检查
sudo systemctl status php7.4-fpm;如未运行,尝试 sudo systemctl start php7.4-fpm。用 pgrep php7.4-fpm 检查是否存在 worker 进程。ss -lntp | grep php 或 netstat -plnt | grep php 确认端口占用;若为 Unix 套接字,检查文件是否存在与权限:ls -l /var/run/php/php7.4-fpm.sock。sudo tail -f /var/log/php7.4-fpm.log 实时跟踪。sudo php-fpm7.4 -t;主配置通常在 /etc/php/7.4/fpm/php-fpm.conf,池配置在 /etc/php/7.4/fpm/pool.d/www.conf。sudo systemctl restart php7.4-fpm,再次查看状态与日志确认恢复。二 日志与常见错误模式
php_admin_value[error_log] 自定义路径,用 php_admin_flag[log_errors] on 开启日志,catch_workers_output yes 捕获脚本输出。slowlog = /var/log/php-fpm/slow.log 与 request_slowlog_timeout = 5s,用 sudo tail -f /var/log/php-fpm/slow.log 找出耗时函数与文件。error_log),用 tail -f 与 grep 检索 Fatal/Parse/Notice 等关键字。三 与 Web 服务器集成的关键检查
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; 或 fastcgi_pass 127.0.0.1:9000;。ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1。sudo systemctl reload nginx/apache2 与 sudo systemctl restart php7.4-fpm。四 高频场景与修复动作
sudo systemctl status php7.4-fpm 查看原因;用 sudo php-fpm7.4 -t 检查语法;查看 PHP-FPM 日志 与 系统日志(journalctl -u php7.4-fpm -xe)定位配置/权限/资源问题;修复后 sudo systemctl restart php7.4-fpm。ss -lntp | grep <port> 检查占用并释放或更换端口;若为 Unix 套接字,确认路径、权限与属主正确,必要时删除陈旧套接字文件后重启。sudo chown -R www-data:www-data /var/www/html 与 sudo chmod -R 755 /var/www/html。free -m、df -h 检查 内存/磁盘,避免因 OOM 或磁盘写满导致 PHP-FPM 异常。五 进阶调试命令与脚本
sudo strace -f -ff -t -d -p <PID>,观察 accept/read/write/connect 等系统调用是否阻塞。sudo php-fpm7.4 -t;按需查看 php.ini 与 pool.d/www.conf 的包含关系与生效值。ss -lntp | grep php、pgrep php7.4-fpm、ls -l /var/run/php/php7.4-fpm.sock。pm.status_path = /status,并通过 Nginx/Apache 对该路径做访问控制后访问,观察 pool、processes、queue 等关键指标。