网站打开就502,这是所有建站人最常碰到的报错,我碰到过不下上百次,今天把常见的5个原因和解决办法列出来,照着排查,5分钟就能找到问题。
1. PHP-FPM没启动
最常见的原因,宝塔面板里PHP服务停了,直接打开网站就502。去宝塔软件商店,找到PHP对应的版本,看服务状态是不是已启动,没启动的话点一下启动就行。很多时候服务器重启之后,PHP没自动拉起来,就会出现这个问题。
如果启动失败,去看日志,一般是配置文件改错了,或者扩展冲突,把最近改的配置回滚,基本就能起来。
2. PHP内存不够,进程崩了
小内存服务器(2G以下),跑的网站多了,PHP-FPM会因为内存不足直接退出,网站就502。SSH上服务器,执行free -m看内存,如果内存占满了,就把没用的服务关掉,或者把PHP的pm.max_children参数调小,别开太多进程,2G内存一般开10-15个进程就够了。
我之前有个客户,1G内存跑了5个网站,PHP开了50个进程,结果每隔几个小时就崩一次,把进程数调到8之后,再也没出过问题。
3. Nginx配置错误,端口不对
Nginx连接PHP是走9000端口的,如果PHP的监听端口改了,或者Nginx配置里fastcgi_pass写错了地址,Nginx连不上PHP,就会返回502。去看Nginx的错误日志,路径一般是/www/server/nginx/logs/error.log,最后一行会写"connect() failed (111: Connection refused) while connecting to upstream",就是端口连不上。
改回正确的端口,重启Nginx就好。
4. 网站目录权限不对
很多新手改完目录权限,把所有者改成root了,PHP进程是www用户跑的,读不了网站目录里的文件,也会报502。执行chown -R www:www /www/wwwroot/你的网站目录,把权限改回来就正常了。
别动不动就把整个目录改成777,那是偷懒,也不安全,正确的权限是目录755,文件644,所有者www。
5. PHP版本和程序不兼容
老程序比如Z-Blog旧版本、老的CMS,不支持PHP8.x,你把PHP版本切到8.2之后,直接502,连错误页面都出不来。去宝塔的网站设置里,把PHP版本切回7.4或者5.6,兼容老程序,一般就能打开。
现在新程序基本都支持PHP8了,但是老源码下载下来的,一定要注意PHP版本兼容性,别上来就装最新版。
排查顺序
碰到502别慌,按这个顺序来:先看PHP服务启没启动,再看内存够不够,然后看Nginx日志,最后查权限和版本,90%的情况都能解决。别一碰到502就重装系统,重装完问题还是在,纯粹浪费时间。
本站源码来源于网络收集修改或者交换,甚至可能并非原创,如遇未经考证信息需持审慎态度。若有疑问,可联系本站处理。