Laravel项目显示502 Bad Gateway nginx/1.17.2问题求助
解决Mac更新Node后Laravel Valet项目502 Bad Gateway问题
刚踩过类似的坑,给你梳理几个精准的排查和解决步骤:
1. 先看php-fpm的具体错误日志
502 Bad Gateway本质是Nginx没法和php-fpm通信,所以先抓php-fpm的错误日志找根源:
# Valet的php-fpm日志默认路径,替换成你实际的日志路径 cat ~/.config/valet/Log/php-fpm.log
重点盯这类关键词:address already in use(端口被占用)、failed to listen on socket(套接字路径错误)、permission denied(权限不足)。
2. 检查并切换Valet使用的PHP版本
更新Node可能无意中打乱了PHP的环境变量,导致Valet加载的PHP版本和项目不兼容,php-fpm没能正常启动:
# 查看当前Valet绑定的PHP版本 valet php --version # 切换到你项目依赖的版本(比如php@8.2) valet use php@8.2 --force
3. 重启相关服务
先重启php-fpm,再重启Valet,确保所有服务都处于正常运行状态:
# 重启对应版本的php-fpm,示例为php@8.2 brew services restart php@8.2 # 重启Valet服务 valet restart
4. 检查端口占用情况
你已经查了80端口,还要确认php-fpm默认监听的9000端口(或套接字)是否被其他进程抢占:
# 检查9000端口的占用情况 sudo lsof -i:9000 # 如果发现被无关进程占用,杀掉对应的PID sudo kill -9 <进程PID>
如果是套接文件被占用(比如/usr/local/var/run/php-fpm.sock),可以先删除套接字再重启php-fpm:
rm /usr/local/var/run/php-fpm.sock brew services restart php@8.2
5. 检查Valet的Nginx站点配置
偶尔更新环境会导致Valet的站点配置出错,打开对应项目的配置文件:
open ~/.config/valet/Nginx/local.myproject.test
确认fastcgi_pass配置项是否正确,比如对应PHP版本的套接字路径:
# 示例:php@8.2的套接字路径 fastcgi_pass unix:/usr/local/var/run/php-fpm.sock;
如果路径错误,修改后保存,再重启Valet生效。
6. 修复系统PATH变量
更新Node可能把Node的路径放到了PHP前面,导致Valet找不到正确的PHP二进制文件:
# 查看当前系统识别的PHP路径 which php # 如果不是你需要的版本,把对应PHP版本的路径加到PATH最前面(以zsh为例) echo 'export PATH="/usr/local/opt/php@8.2/bin:$PATH"' >> ~/.zshrc # 刷新配置生效 source ~/.zshrc # 最后重启Valet valet restart
按这个顺序排查,基本能解决大部分更新Node后Valet出现的502问题。
内容的提问来源于stack exchange,提问作者Ankur Choudhury
相关产品推荐
相关产品推荐

