宝塔面板部署 PHP 源码后出现 502 怎么排查?Nginx、PHP-FPM 与站点日志

先确认502由哪个上游返回,再沿着进程、Socket、版本、权限和资源限制逐层定位。

宝塔面板部署PHP源码或CMS后出现502,通常不能靠重启解决。本文给出Nginx错误日志、PHP-FPM状态、Socket、PHP版本、扩展、权限与资源限制的排查顺序。

宝塔站点返回502时,先在访问当刻查看站点Nginx错误日志,确认是连接PHP-FPM失败、上游超时还是进程被系统终止。随后核对站点选择的PHP版本、FPM监听地址、Socket权限、扩展依赖和内存。不要先反复重启,也不要把目录改成777。

宝塔面板部署 PHP 源码后出现 502 怎么排查的分层排查流程图
先确认502由哪个上游返回,再沿着进程、Socket、版本、权限和资源限制逐层定位。

先给结论

宝塔站点返回502时,先在访问当刻查看站点Nginx错误日志,确认是连接PHP-FPM失败、上游超时还是进程被系统终止。随后核对站点选择的PHP版本、FPM监听地址、Socket权限、扩展依赖和内存。不要先反复重启,也不要把目录改成777。

先从错误日志判断502类型

Nginx只是请求入口,502表示它没有从配置的上游获得有效响应。宝塔站点通常把PHP请求交给对应版本的PHP-FPM,因此第一份证据应是站点错误日志,而不是浏览器页面。`connect() failed`多指向FPM未监听、Socket不存在或权限不通;`upstream timed out`说明上游存在但响应过慢;`Connection reset by peer`可能与FPM崩溃、进程被杀或代码异常有关。

记录发生时间、请求URL和日志中的upstream地址。若静态文件正常、只有PHP路径502,问题范围已经缩小到PHP链路;若所有反向代理路径都502,则还要检查Node、Java或容器的真实上游端口。

可以先执行的只读检查

确认监听与进程

ss -lntp | grep -E ':80|:443|:9000'
ps -ef | grep '[p]hp-fpm'

命令只读取当前状态;请替换示例域名、端口或容器名,并结合故障时间验证输出。

查看资源与内核终止记录

free -h
df -h
dmesg -T | grep -Ei 'oom|killed process' | tail -30

命令只读取当前状态;请替换示例域名、端口或容器名,并结合故障时间验证输出。

核对站点使用的PHP版本和FPM

源码要求PHP 8.1,不代表服务器安装了8.1就会自动使用。宝塔可以同时安装多个PHP版本,站点配置、命令行`php -v`和计划任务使用的版本可能不同。应在面板站点设置中确认当前PHP版本,再检查对应FPM服务是否运行、配置测试是否通过。

升级PHP后出现502,要同时检查扩展、禁用函数、`open_basedir`和框架缓存。旧源码可能依赖已移除扩展,新源码也可能拒绝旧版本。先读取项目的`composer.json`、安装说明和错误日志,不要凭经验批量开启扩展。

Socket、端口和权限如何核对

Nginx配置里的`fastcgi_pass`可能指向Unix Socket,也可能指向127.0.0.1端口。实际FPM监听值必须完全一致。Socket存在但Nginx用户无权访问时同样会502;此时应修正FPM池的owner、group和mode,使其符合当前Web用户,而不是把整个网站目录改成777。

如果源码被放在错误运行目录,Nginx的`SCRIPT_FILENAME`也可能指向不存在的文件。检查站点根目录、入口目录是否应为`public`,以及伪静态规则是否适配当前框架。修改配置后先执行语法检查,再平滑重载。

资源不足与慢请求怎么判断

小内存服务器部署多个CMS、数据库和缓存时,PHP-FPM可能被OOM Killer终止。此时面板显示的瞬时内存未必能复现故障,要结合内核日志、PHP-FPM日志和故障时间附近的负载。磁盘满、inode耗尽或日志目录不可写也会让进程异常。

上游超时不能简单把超时值无限调大。应查看慢日志、数据库连接、外部API、DNS和文件锁,找到请求卡在哪一步。合理调整FPM进程数前先按单进程实际内存估算,不要让`pm.max_children`超过系统承载能力。

修复后如何验收

先使用一个确定存在的PHP入口验证FPM链路,再访问CMS首页、后台登录、上传、计划任务和数据库读写。持续观察Nginx与FPM日志,确认没有新的warning、超时和进程退出。若通过重启临时恢复,应继续寻找泄漏、慢查询或资源不足原因。

最后备份站点配置和依赖清单,记录PHP版本、扩展、运行目录、Web用户和FPM池。后续迁移或更新源码时按同一清单复核,避免面板显示“服务正常”但站点仍指向错误上游。

上线或恢复前检查

  • 保存故障时刻的Nginx与FPM日志
  • 站点PHP版本和依赖一致
  • 上游监听与权限完全匹配
  • 修复后业务操作与资源曲线正常

涉及生产数据、网络入口、磁盘或远程路由时,必须先备份并保留控制台回退通道。平台界面、软件版本和策略可能变化,实际操作以当前官方文档与控制台提示为准。

相关阅读

官方资料

云服务器教程Vue、React 单页应用刷新后 404 怎么办?Nginx History 路由与 API 分流2026-09-13云服务器教程Docker 提示 pull access denied 怎么办?镜像名、仓库权限与登录排查2026-09-13云服务器教程MySQL 报 ERROR 1205 Lock wait timeout 怎么办?阻塞事务与安全止损2026-09-12

加入开发者交流社区

与全球开发者、运维和工作室一起交流技术、分享经验、配置、账号与最新优惠信息

  • 云平台使用交流
  • 资源优惠信息
  • 最新教程与资讯
  • 开发者经验分享
联系 Telegram 客服
加入开发者交流社区