很多新手用PHP程序,碰到"500 Internal Server Error",直接慌了,其实500错误是PHP代码报错,不是服务器挂了,今天说一下怎么快速定位500错误。
第一步:打开错误显示
默认情况下,PHP出错不会显示具体原因,只返回500错误,你什么都看不到。去宝塔的PHP设置里,把"display_errors"打开,错误显示开,然后刷新页面,具体报错信息就会显示出来。
或者直接在报错的PHP文件最前面加两行代码:
ini_set('display_errors',1);
error_reporting(E_ALL);
刷新页面,哪一行错了、什么错,写得明明白白,比瞎猜快多了。
常见的500原因
最常见的是语法错误,比如少了分号、括号不配对,错误提示会直接告诉你哪个文件第几行,跳过去看一眼,90%都是这种低级错误。
然后是文件权限不对,PHP没有权限读或者写文件,把目录权限改成755,文件644,所有者改成www,就解决了。
还有是PHP版本不兼容,老程序在PHP8.2上跑,很多函数不兼容,直接500,把PHP版本切到7.4,一般就正常了。
看PHP错误日志
如果不想改代码,直接看PHP错误日志,路径在/www/server/php/你的版本/var/log/php-fpm.log,最后几行就是最新的报错,写得很清楚哪个文件哪一行出了什么问题。
我现在碰到500,先翻日志,30秒就能找到原因,根本不用慌。
注意事项
网站上线之后,记得把错误显示关掉,不然访客看到一堆报错信息,既不专业,还暴露服务器路径,有安全风险。调试的时候打开,调试完关掉,靠日志看错误就行。
500错误真的不可怕,打开错误提示,按照提示找原因,大部分都是小问题,几分钟就能修好。
本站源码来源于网络收集修改或者交换,甚至可能并非原创,如遇未经考证信息需持审慎态度。若有疑问,可联系本站处理。