Nginx 升级 PHP 8.0 需确保 fastcgi_pass 正确指向 PHP-FPM 8.0 的 socket 或端口,检查服务状态、监听地址、权限及配置匹配,并通过 phpinfo() 验证。

Nginx 本身不直接“监听 PHP”,它通过 FastCGI 协议把 .php 请求转发给 PHP-FPM 进程处理。升级到 PHP 8.0 后,关键不是改 Nginx 的 listen 端口(那是监听 HTTP/HTTPS 请求的),而是确保 Nginx 能正确连接到 PHP 8.0 对应的 PHP-FPM 实例。配置核心落在 fastcgi_pass 指向的 socket 或端口是否匹配、权限是否正确、服务是否运行。
以下是必须检查和操作的几个环节:
确认 PHP 8.0-FPM 已安装并正在运行
- 运行
php -v确认 CLI 版本是 8.0.x; - 运行
systemctl status php8.0-fpm(Ubuntu/Debian)或systemctl status php-fpm(RHEL/CentOS,需确认启用的是 8.0 流); - 若未运行,执行
sudo systemctl start php8.0-fpm && sudo systemctl enable php8.0-fpm。
查清 PHP-FPM 的监听地址
PHP-FPM 默认监听 Unix socket,路径通常为:/run/php/php8.0-fpm.sock(Ubuntu/Debian)/var/run/php-fpm/www.sock 或 /run/php-fpm/www.sock(RHEL/CentOS)
检查方式:
立即学习“PHP免费学习笔记(深入)”;
- 打开配置文件(如
/etc/php/8.0/fpm/pool.d/www.conf或/etc/php-fpm.d/www.conf); - 查找
listen =行,确认值是 socket 路径还是127.0.0.1:9000类型端口; - 若是 socket,再确认
listen.owner和listen.group与 Nginx 运行用户一致(如www-data或nginx)。
更新 Nginx 站点配置中的 fastcgi_pass
在对应网站的 server 块中,找到 location ~ \.php$ 区块,确保 fastcgi_pass 指向上面查到的准确路径:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.0-fpm.sock; # ← 这里必须匹配 PHP-FPM 的 listen 值
}- 如果用的是 TCP 端口(如
127.0.0.1:9000),则写成fastcgi_pass 127.0.0.1:9000;; - 切勿沿用旧版本的 sock 路径(如
php7.4-fpm.sock),否则会报 502。
验证与收尾
- 执行
sudo nginx -t检查语法; - 执行
sudo systemctl reload nginx重载配置; - 在网站根目录放一个
info.php(内容<?php phpinfo(); ?>),浏览器访问测试; - 页面顶部显示 “PHP Version 8.0.x” 即表示生效;
- 验证后建议删除
info.php,避免信息泄露。
不复杂但容易忽略。



















