PHP-FPM必须以Nginx实际运行用户(如nginx)启动,否则导致502错误、权限拒绝;需修改www.conf中listen、listen.owner、listen.group、user、group为同一用户,并确保socket路径匹配、配置语法正确、服务重启后属主与进程用户一致。

在CentOS上部署Laravel时,PHP-FPM进程必须以Nginx实际运行的用户身份启动,否则会出现502 Bad Gateway、文件权限拒绝或public/index.php无法解析等故障;若用默认的apache或www用户,而Nginx跑在nginx用户下,套接字通信会直接失败。
确认Nginx实际运行用户
执行命令查看Nginx主进程属主:ps -eo user,comm | grep nginx | grep master。输出首列为实际用户,常见为【nginx】;若显示www或apache,需同步调整PHP-FPM配置,否则后续所有socket通信都会被系统拒绝。
这一步不能跳过——宝塔面板默认用www用户,但手动安装的CentOS 7/8/9多数用nginx用户,混用会导致服务完全不可用。
修改PHP-FPM池配置文件
打开主配置文件:sudo vi /etc/php-fpm.d/www.conf。
立即学习“PHP免费学习笔记(深入)”;
找到以下四行并取消注释、统一设为Nginx实际用户(以nginx为例):
listen = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
user = nginx
group = nginx
【listen.owner和listen.group必须与user/group严格一致,否则socket文件权限错乱,Nginx无法连接】
注意:若PHP是remi仓库安装(如php82),socket路径可能是/run/php-fpm/remi-php82/php-fpm.sock,请同步修改listen值,否则Nginx配置里的fastcgi_pass将指向不存在的路径。
验证并重载服务
第一步:检查配置语法是否正确:sudo php-fpm -t。返回“test is successful”才可继续。
第二步:重启PHP-FPM:sudo systemctl restart php-fpm。
第三步:确认socket文件已生成且属主正确:ls -l /run/php-fpm/www.sock。应显示类似 srw-rw----. 1 nginx nginx —— 若属主不是nginx,说明配置未生效或服务未真正重启。
第四步:检查PHP-FPM进程用户:ps aux | grep php-fpm | grep -v grep。worker进程的USER列必须为nginx(或你设定的对应用户),否则请求进来后仍会因权限不足被内核拦截。



















