在 Ubuntu 上调试 PHP-FPM 通常涉及日志、配置、进程状态、慢日志、Xdebug 等方面。下面按实用场景给你一份「从入门到排错」的调试指南。
systemctl status php-fpm
# 或(版本不同)
systemctl status php8.1-fpm
看是否有:
active (running)查看进程:
ps aux | grep php-fpm
通常在:
/var/log/php8.1-fpm.log
或:
/var/log/php-fpm/error.log
实时查看:
tail -f /var/log/php8.1-fpm.log
php --ini
编辑:
/etc/php/8.1/fpm/php.ini
确保:
display_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
重启:
systemctl restart php8.1-fpm
查看:
tail -f /var/log/php_errors.log
编辑 pool 配置:
/etc/php/8.1/fpm/pool.d/www.conf
开启:
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s
重启:
systemctl restart php8.1-fpm
查看慢请求:
tail -f /var/log/php-fpm/slow.log
listen = 127.0.0.1:9000
测试:
telnet 127.0.0.1 9000
listen = /run/php/php8.1-fpm.sock
权限问题很常见:
ls -l /run/php/php8.1-fpm.sock
Nginx 用户(如 www-data)必须有权限。
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
502 Bad Gateway → PHP-FPM 没启动 / socket 权限错误404 → SCRIPT_FILENAME 配错File not found → 路径不对Nginx 错误日志:
tail -f /var/log/nginx/error.log
apt install php-xdebug
/etc/php/8.1/fpm/conf.d/20-xdebug.ini
示例:
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
重启:
systemctl restart php8.1-fpm
配合 VS Code / PHPStorm 使用。
php -r "echo phpinfo();"
或:
php /var/www/html/test.php
如果你愿意,可以告诉我:
我可以直接帮你定位问题。