当Nginx调用PHP-FPM出现错误时,通常表现为502 Bad Gateway、404 Not Found或空白页面。以下是系统化的排查和解决方案:
# 检查服务状态
systemctl status nginx php-fpm
# 确保服务已启动
sudo systemctl restart nginx php-fpm
nginx
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 或 127.0.0.1:9000
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}fastcgi_pass路径/端口与PHP-FPM配置不一致SCRIPT_FILENAME未正确设置(需绝对路径)/etc/php/7.4/fpm/pool.d/www.conf):
ini
listen = /run/php/php7.4-fpm.sock # Unix Socket
; 或 listen = 9000 # TCP端口bash
chown www-data:www-data /run/php/php7.4-fpm.sock
chmod 660 /run/php/php7.4-fpm.sock# 确保PHP文件可读且目录可执行
chmod -R 755 /var/www/html
chown -R www-data:www-data /var/www/html
bash
tail -f /var/log/nginx/error.logbash
tail -f /var/log/php7.4-fpm.logbash
sudo -u www-data SCRIPT_FILENAME=/var/www/html/test.php \
REQUEST_METHOD=GET cgi-fcgi -bind -connect /run/php/php7.4-fpm.sockbash
telnet 127.0.0.1 9000| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 502 Bad Gateway | PHP-FPM未运行/配置不匹配 | 检查fastcgi_pass与PHP-FPM监听地址 |
| 404 Not Found | SCRIPT_FILENAME路径错误 |
确认$document_root指向正确目录 |
| 空白页 | PHP语法错误/权限问题 | 查看PHP-FPM日志,检查文件权限 |
| "Primary script unknown" | 路径传递失败 | 确保Nginx和PHP-FPM用户一致(如www-data) |
php
ini_set('display_errors', 1);
error_reporting(E_ALL);ini
; php.ini 中检查以下参数
max_execution_time = 30
memory_limit = 128Minfo.php测试基础功能)通过以上步骤,90%的Nginx+PHP-FPM集成问题均可定位解决。若问题仍存在,需结合具体日志进一步分析。