WordPress 内部服务器错误 (HTTP 500 Internal Server Error) 是一个常见的问题,当然这个错误不仅限于 WordPress,任何 web 程序都有可能出现这个内部服务器错误。今天我们的重点放在 WordPress 程序上。下图显示的就是一个典型的 500 内部服务器错误。

internalservererror

 

本教程将重点谈到以下二个问题:

  • 500 服务器错误的原因
  • 500 服务器错误的解决办法

1.500 服务器错误的原因

这是一个比较头痛的问题,因为其没有返回任何信息给 WordPress 网站管理员。导致发生这个问题的原因有几种。首先 .htaccess 文件 (php+mysql 环境) 的不标准化是导致这个错误的常见原因之一。有的 WordPress 网站管理员为了各种需要,在 .htaccess 文件里添加了很多东西或收到被黑客串改。再就是 WordPress 服务器资源耗尽,这一方面是主机本身的限制而你的站点访问徒增,另一方面是折腾了一些插件导致的。然后就是函数的错误,有时我们在 functions.php 加入了错误的代码,最典型的莫过于引号没有使用英文引号或代码不完整 (喜欢直接粘贴代码的人员最易出现这个错误) 。

2. 如何解决 WordPress 内部服务器错误

解决的办法我们只有通过瞎子摸象的办法,一个个的实验进行排除。

2.1 排除 .htaccess 错误

方法是通过 ftp 登录到主机空间,把 .htaccess 文件重命名 .htaccess.bak 。现在尝试登录 WordPress 后台,如果能够登录,则说明是此 .htaccess 文件导致的内部服务器错误。然后到设置-固定链接,设置一下固定链接,重新生成一个标准的 .htaccess 文件。如果还是不能登录,说明可能不是这个导致的。不过暂时不要修改回来,以防是多重原因导致的。

2.2 增加 PHP 内存限制

这是大家比较头痛的,在上传图像或登录 WordPress,或安装主题,或安装插件时都会遇到。而这些会可能直接导致服务器内部错误。遇到这个问题就是要增加 PHP 内存限制。如果你能控制服务器,在 php.ini 文件里找到

memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)

有的是 32M,把这个值修改为 128M

遗憾的是网站管理员往往不能控制这个,所以我们针对 WordPress 拿出最后的杀手锏,为什么这么说,因为这个方法很有效,笔者使用这个方法解决了好几个类似问题。

1) 新建的一个空白的文件,命名为 php.ini 。

2) 打开这个文件,输入:memory = 128M,如果这个不行使用 memory_limit = 128M 。

3) 把这个文件上传到/wp-admin/内,主意不是网站根目录。

关于这个问题,详情可阅读:WordPress 十大常见错误之五: 内存错误。

2.3 重命名插件或主题

如果上面的能解决问题,说明有可能是某个插件消耗了你的资源。所以接下来最好测试一下是那个插件消耗了你的资源。故把原来的 plugins 命名为 plugins.bak,然后重新新建一个 plugins 文件夹。接下来逐步把原来的插件一个个移到新建的目录里进行测试。

Plugin Performance Profiler (P3) 使用这个插件可以测试你的插件使用情况。

如果不是插件问题,把目标转移到主题上,命名原主题文件夹名为一个不同的名字,即可切换到默认主题。

2.4 覆盖文件

还有一种情况就是 WordPress 本身的系统由于某种原因出现了问题。这是被很多人忽略的。所以这个适合,下载同版本的 WordPress,重新覆盖一下。不用担心会修改你的内容,因为设置在数据库里,所以不会修改原来的设置,也不会丢失数据的。

2.5 联系主机商

如果上面的情况不能解决你的问题,最后就是联系你的主机商,看看是不是 CPU 值太高,如果是虚拟主机,是不是其它的网站占用资源太多导致的。总之主机商那里肯定可以获得更多关于 500 服务器内部错误的信息。如服务器日志。