温馨提示×

ubuntu php-fpm怎么调试

小樊
51
2026-09-25 16:24:58
栏目: 编程语言

在 Ubuntu 上调试 PHP-FPM 通常涉及日志、配置、进程状态、慢日志、Xdebug 等方面。下面按实用场景给你一份「从入门到排错」的调试指南。


一、先确认 PHP-FPM 是否正常运行

systemctl status php-fpm
# 或(版本不同)
systemctl status php8.1-fpm

看是否有:

  • active (running)
  • 监听端口 / socket

查看进程:

ps aux | grep php-fpm

二、查看 PHP-FPM 日志(最重要)

1. 错误日志位置

通常在:

/var/log/php8.1-fpm.log

或:

/var/log/php-fpm/error.log

实时查看:

tail -f /var/log/php8.1-fpm.log

三、开启 PHP 错误日志(应用层调试)

1. 修改 php.ini

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

四、开启 PHP-FPM 慢日志(性能调试)

编辑 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

五、确认 PHP-FPM 监听方式

1. 端口模式(常见)

listen = 127.0.0.1:9000

测试:

telnet 127.0.0.1 9000

2. Socket 模式(Nginx 常用)

listen = /run/php/php8.1-fpm.sock

权限问题很常见:

ls -l /run/php/php8.1-fpm.sock

Nginx 用户(如 www-data)必须有权限。


六、Nginx + PHP-FPM 调试

1. Nginx 配置示例

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

2. 常见错误

  • 502 Bad Gateway → PHP-FPM 没启动 / socket 权限错误
  • 404 → SCRIPT_FILENAME 配错
  • File not found → 路径不对

Nginx 错误日志:

tail -f /var/log/nginx/error.log

七、用 Xdebug 调试(开发神器)

1. 安装

apt install php-xdebug

2. 配置

/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(快速验证)

php -r "echo phpinfo();"

或:

php /var/www/html/test.php

九、常见排错清单 ✅

  • [ ] PHP-FPM 是否 running
  • [ ] Nginx fastcgi_pass 是否正确
  • [ ] socket 权限
  • [ ] php.ini 错误日志是否开启
  • [ ] 慢日志是否开启
  • [ ] 用户权限(www-data)

如果你愿意,可以告诉我:

  • PHP 版本
  • Nginx / Apache
  • 具体报错(502 / 空白页 / 超时)

我可以直接帮你定位问题。

0 踩