PHP 500 错误怎么解决

打开网站后台调试页面,刚上传完代码就看到屏幕上跳出来的“500”提示,像个没考好的孩子一样让人摸不着头脑。别着急,这是PHP程序运行时出了内部故障,不是服务器挂了,也不是你访问的地址错了,大多是代码、配置或文件权限的小问题,一步步排查就能搞定。

先找错误日志,定位问题根源

就像家里电器跳闸,先看电闸上的开关状态,PHP的“电闸日志”就是解决问题的第一步。很多新手会直接看屏幕提示,可默认服务器会把500错误藏起来,只给你一个模糊的“内部服务器错误”。

PHP 500 错误怎么解决

你可以打开网站的根目录,找一个叫error_log的文件,或者在服务器控制面板(比如宝塔、cPanel)里找“PHP错误日志”选项。用记事本打开后,你会看到类似PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect()的提示,这里的“未定义mysql_connect函数”就是病根——只要照着这个提示改,就能解决八成问题。

举个例子,有人刚把旧网站从PHP5升级到PHP7,直接用了老代码里的mysql_connect函数,PHP7早就把这个函数删了,日志里就会报这个错,换成新的mysqli_connect就好了。

排查代码问题,从常见坑点入手

如果日志没找到,那大概率是代码里的小疏漏。PHP500错误最常见的代码问题,就是符号写错或版本不兼容。

先看代码里的标点符号:中文输入法下的分号;、引号“”,都会让PHP认不出语法,直接报错。比如写echo "hello";,结尾用了中文分号,运行时就会跳500,换成英文分号;就正常了。

再就是依赖包的问题,用第三方框架或插件时,经常会漏装依赖。比如有人用了某个开源的会员插件,只上传了插件文件夹,没装插件需要的phpmailer库,运行时就会找不到文件报错,去插件官网按说明装依赖包就行。

还有版本兼容坑,老代码用了PHP新环境不支持的函数。比如PHP5的ereg函数,在PHP7里已经废弃了,换成preg_match就能解决,要是不确定某个函数能不能用,去PHP官网搜一下对应的函数名,就能看到支持的版本。

检查配置和权限,这两个容易忽略

代码没问题的话,就看服务器的PHP配置和文件权限,这是很多人容易踩的坑。

先看PHP配置,比如有的网站需要开启fileinfo扩展才能上传图片,要是服务器没开这个扩展,上传图片的代码就会报错出500。用宝塔的话,在“软件商店”里找到PHP版本,点“设置”,在“扩展安装”里勾选fileinfo重启PHP就行。

再就是文件权限,PHP脚本需要读写文件的权限,要是网站的uploads文件夹权限设成了700(只有所有者能读),PHP就没法往里面存图片,会报权限错误。一般网站根目录设成755,可读写的文件夹设成775,就能解决大部分权限问题——注意别把整个网站设成777,会有安全风险。

最后,要是改完所有内容还是出500,试试把网站切回默认的PHP版本,比如之前用PHP7.4,换成PHP5.6,看看还报不报错,就能确定是不是版本不兼容的问题。一步步来,总能找到那个小问题。

上一篇 TypeScript Pick 怎么用