宝塔面板创建网站后访问出现 502 错误,通常是因为 PHP-FPM 服务未启动、进程崩溃或 Nginx 无法连接到 PHP 后端。优先检查磁盘空间和 PHP 服务状态,重启服务可临时恢复,但需查看日志确认根本原因。
先说结论:502 错误本质是网关收到了上游服务的无效响应,在宝塔环境下绝大多数情况是 PHP 进程挂掉或资源耗尽。
- 先确认:服务器磁盘空间是否已满,内存是否不足导致 PHP 进程被杀。
- 先处理:通过 SSH 重启 PHP-FPM 和 Nginx 服务,恢复网站临时访问。
- 再验证:查看错误日志定位具体代码错误或配置问题,防止故障复发。
命令速用版
如果无法通过面板操作,可登录 SSH 使用以下命令快速重启服务并查看状态:
# 重启 Nginx
service nginx restart
# 重启指定版本的 PHP,例如 PHP 7.4
service php74-fpm restart
# 查看宝塔面板服务状态
bt status
# 查看实时错误日志
tail -f /www/wwwlogs/你的域名.error.log为什么会这样
502 Bad Gateway 表示 Nginx 作为反向代理,无法从上游服务器(通常是 PHP-FPM)获得有效响应。
在宝塔面板环境中,常见原因包括 PHP-FPM 进程因内存不足被系统 OOM Killer 杀死、PHP 配置中最大进程数设置过低导致排队拥堵、或者网站代码存在致命错误导致进程退出。此外,磁盘空间写满会导致会话文件无法写入,也会引发连接失败。
分步处理
按照以下顺序排查,每一步操作后都需观察服务状态变化。
1. 检查磁盘空间
适用场景:网站突然无法访问,面板操作卡顿。
操作动作:执行命令 df -h 查看磁盘使用率。
验证结果:如果根分区或 /www 分区使用率达到 100%,需清理日志或扩容。
风险边界:不要随意删除 /www/server 下的系统文件,优先清理 /www/wwwlogs 下的旧日志。
2. 检查 PHP 服务状态
适用场景:磁盘空间正常,但页面仍报 502。
操作动作:执行 ps -ef | grep php 查看进程是否存在。
验证结果:如果没有 php-fpm 进程,说明服务已停止。
风险边界:重启服务会中断当前正在处理的请求,建议在低峰期操作。
3. 检查错误日志
适用场景:服务正常启动,但访问特定页面报错。
操作动作:查看站点错误日志,路径通常为 /www/wwwlogs/域名.error.log。
验证结果:日志中若出现 "connect to unix:/tmp/php-cgi-xx.sock failed",说明 socket 文件权限或路径错误。
风险边界:日志可能较大,使用 tail 命令查看末尾最新错误。
4. 调整 PHP 配置
适用场景:高并发下偶发 502。
操作动作:在宝塔面板【软件商店】中找到对应 PHP 版本,点击【设置】调整最大连接数。
验证结果:调整后观察负载情况,避免设置过高导致内存溢出。
风险边界:修改配置前建议备份配置文件,修改后需重启 PHP 服务生效。
怎么验证是否生效
完成处理后,通过以下方式确认故障是否排除:
1. 浏览器刷新页面,确认 502 错误消失,页面正常加载。
2. 使用命令 curl -I https://你的域名 查看返回状态码是否为 200。
3. 观察宝塔面板【首页】中 CPU 和内存负载是否回归正常水平。
4. 持续监控错误日志 10 分钟,确认没有新的 502 相关报错产生。
常见坑
1. 忽略 Swap 交换分区:如果内存较小且未开启 Swap,PHP 进程容易被系统强制杀死,建议在宝塔面板【Linux 工具箱】中开启 Swap。
2. PHP 版本不匹配:创建网站时选择的 PHP 版本与实际代码要求的版本不一致,导致扩展缺失或语法错误,需在网站设置中切换版本。
3. 防火墙拦截:虽然少见,但如果修改过安全组或防火墙规则,需确保本机回环地址未被限制,允许 127.0.0.1 通信。
4. 权限问题:网站目录权限设置为 777 可能存在安全隐患,但权限过紧(如 000)会导致 PHP 无法读取文件,建议设置为 755 或 750。
常见问题
502 和 504 错误有什么区别?
502 是网关收到无效响应,通常指 PHP 进程挂了;504 是网关超时,通常指 PHP 进程还在但执行时间太长。
静态图片能打开,但 PHP 页面报 502 怎么办?
说明 Nginx 正常,问题出在 PHP 解析环节,重点检查 PHP-FPM 服务状态和代码逻辑。
重启服务后几分钟又出现 502 是什么原因?
通常是资源耗尽导致的循环崩溃,需检查内存使用率或代码是否存在内存泄漏。
宝塔面板本身能打开,只有网站报 502 正常吗?
正常,面板使用的是独立的服务端口,网站 502 仅代表该站点的 Nginx 与 PHP 通信失败,不影响面板登录。