为什么我的 WordPress 网站上出现 HTTP 500 内部服务器错误? (带视频)

已发表: 2021-03-12
HTTP 500 Internal Server Error

最后更新 - 2021 年 7 月 8 日

如果您有一个 WordPress 网站,您可能会遇到的常见错误之一是 HTTP 错误 500。这可能会让网站所有者感到困惑,尤其是如果您是 WordPress 的初学者。 如果您收到 HTTP 错误 500,您会怎么做? 为什么会出现此错误? 您可能必须找出错误的原因,然后尝试不同的选项来修复它。 在本文中,我们将讨论 HTTP 错误 500 的一些原因以及修复它的方法。

了解 HTTP 500 内部服务器错误

当您的服务器无法显示请求的页面时,会显示内部服务器错误。 它可能是您的 Web 服务器上的问题,并且具有某种通用性。 从这个错误中,您可能无法理解很多潜在的原因。 此错误有几个常见原因,其中包括您安装的插件或主题的不当行为。 这也可能是由于 .htaccess 文件损坏或 PHP 内存限制问题。

现在,我们将研究可能帮助您解决此错误的可能性。

启用调试

您可以尝试解决 WordPress 上的错误的首要策略之一是打开调试。 现在,这不会为您解决问题,但它会帮助您找出问题所在。

要打开调试模式,您必须访问 wp-config.php 文件。 当您搜索此文件中的内容时,您应该能够找到 WP_DEBUG。 这必须设置为“true”才能启用调试。 如果您无法在 wo-config.php 文件中找到 WP_DEBUG,您可以简单地创建它。

基本上,您需要在 wp-config.php 文件中有以下代码才能打开调试。

define( "WP_DEBUG", true );

现在,如果您尝试重新加载站点,则错误可能已更改。 有可能现在错误已更改,并且新错误指向存在问题的特定代码行。 这实际上将帮助您了解问题的确切性质,并且您可以直接解决它并修复它。 例如,如果错误指向插件或主题,您可以简单地禁用它来解决问题。 如果打开调试后没有任何变化,您仍然可以将其保持为“真”,直到问题解决。

试试调试插件

您可以使用调试插件来帮助您识别问题。 这是一个流行的:

查询监视器

该插件将帮助您调试您在网站上可能遇到的不同问题。 其中包括数据库查询、PHP 错误、AJAX 调用的调试、识别插件的性能问题等。它通过有组织地显示页面的调试信息来帮助您识别站点上的问题。

HTTP 500 内部服务器错误
该插件可帮助您调试不同的 WordPress 问题。

清除浏览器缓存

清除浏览器缓存是一个很好的初始故障排除步骤,可能值得一试。 尽管该过程可能因各种浏览器而异,但您可以通过以下方式清除 Google Chrome 的浏览器缓存。

找到并单击浏览器右上角的三个点图标。 然后,前往更多工具 > 清除浏览数据

HTTP 500 内部服务器错误
从缓存中访问“清除浏览数据”设置。

将打开一个新窗口,并弹出“清除浏览数据”。 在这里,请确保您只选择了“缓存的图像和文件”选项,因为我们现在不想删除保存的密码、cookie 和浏览历史记录。

在顶部,您还可以选择清除浏览缓存的时间范围。 然后,只需单击“清除数据”。 您的 Chrome 浏览器缓存现在为空。

HTTP 500 内部服务器错误
清除 Chrome 中的浏览器缓存。

检查插件和主题

有时,当您遇到内部服务器错误时,您仍然可以访问 WordPress 管理页面。 如果是这种情况,您可以检查您的插件或主题之一是否导致问题。 为此,首先,您可以停用站点上的所有插件,然后尝试重新加载站点。 如果错误消失,则表示问题出在其中一个插件上。 现在,您可以一个一个激活插件,看看错误是否再次出现。 这样,您可以轻松确定是否是某个插件导致了错误。

如果您无法确定插件的问题,则您的主题可能会造成问题。 了解这一点的最佳方法是切换到默认的 WordPress 主题。 如果您的网站在此之后加载正常,则意味着问题出在主题上。 您可以联系主题的客户支持,或获得开发人员的帮助以查找主题的具体问题。

增加内存限制

内部服务器错误的原因之一可能是您站点的内存限制。 有时,错误编码的插件或主题会导致耗尽内存限制。 即使它不是永久解决问题的方法,您也可以通过增加内存限制来暂时避免错误。 专家警告说,这不是推荐的修复方法,您应该进一步调查以了解是什么耗尽了内存。

就像您启用调试一样,您可以从根 WordPress 安装中找到 wp-config.php 文件。 在文件中搜索以下行:

define('WP_MEMORY_LIMIT', '32M');

您可以通过在此处指定更高的值来简单地增加内存限制。 例如,您可以替换此行,如下所示:

define('WP_MEMORY_LIMIT', '128M');

如果内存限制是问题,这应该足以帮助您克服错误。 您还可以联系您的托管服务以了解服务器是否存在问题。 如果服务器没有真正针对无缝 WordPress 体验进行优化,您甚至可以考虑切换到另一个托管服务。 这些与服务器相关的问题通常可以在共享托管服务中看到。

修复 .htaccess 文件的问题

.htaccess 文件包含一些可能对您的站点运行至关重要的服务器配置规则。 .htaccess 文件中的任何问题都可能导致错误。 现在,您将如何确定问题是否实际上是由损坏的 .htaccess 文件引起的?

使用 FTP 查找 WordPress 根目录中是否有 .htaccess 文件。 确保隐藏文件在 FTP 编辑器上可见。 如果您能够找到 .htaccess 文件,则可以通过重命名该文件来创建该文件的备份。 现在,您必须删除原始 .htaccess 文件及其所有内容。 在此之后,您可以尝试重新加载网站。 如果问题出在损坏的 .htaccess 文件上,删除该文件及其内容将为您解决问题。

您可以通过访问“设置”>“永久链接”并单击“保存更改”按钮来创建新的 .htaccess 文件。

检查您的 PHP 版本

您需要找出运行您网站的 PHP 版本。 简单地使用旧版本的 PHP 不会导致内部服务器错误。 但是,如果插件正在使用旧版本中不可用的功能,则可能会导致错误。 请联系您的托管服务提供商并了解您正在运行的 PHP 版本。 如果它是一个非常旧的版本,请要求他们更新到最新版本。

重新上传核心 WordPress 文件

在大多数情况下,这不是问题的明确解决方案。 但是,如果其他策略都不适合您,专家建议尝试一下。 在此之前,您应该创建站点的备份,然后下载新版本的 WordPress。

HTTP 500 内部服务器错误
您可以下载新版本的 WordPress 并替换 wp-admin 和 wp-includes 文件夹。

使用 FTP 客户端访问您站点的根目录,并将现有的wp-adminwp-includes文件夹替换为新版本。 刷新您的站点,如果错误消失了,您可以假设它是由于核心文件损坏造成的。

修复建立数据库连接的错误问题

数据库连接错误也可能导致发生 500 个内部服务器错误。 尽管它还会在服务器日志中生成 500 HTTP 状态,但您会在浏览器中收到“建立数据库连接时出错”消息。

此问题可能是由不正确的数据库登录凭据、损坏的 WordPress 数据库或文件或由于您的数据库服务器的其他问题引起的。 以下是针对此问题的一些简单修复:

  1. 检查您的数据库登录凭据是否正确。
  2. 使用 WordPress 的内置数据库修复模式修复损坏的数据库:define('WP_ALLOW_REPAIR', true);
  3. 修复损坏的文件
  4. 请与您的托管服务提供商联系,了解与您的数据库服务器相关的问题。
  5. 恢复到您的最新备份。

消除任何 WordPress 权限错误

如果您服务器上的文件或文件夹存在权限错误,您将看到 500 内部服务器错误。 您可以使用 FTP 客户端查看这些文件权限。 以下是有关 WordPress 文件和文件夹权限的一些建议。

  • 所有文件应为 644 (-rw-r–r–) 或 640。
  • 所有目录应为 755 (drwxr-xr-x) 或 750。
  • 不应给任何目录 777,包括上传目录。
  • 加固: wp-config.php 可以设置为 440 或 400 以防止服务器上的其他用户读取它。

确定是否存在多个问题

有可能是多种问题导致您的站点出现内部服务器错误。 重要的是,您能够确定是否属于这种情况。 如果您按顺序尝试上述故障排除步骤,您将能够识别这种情况的一种方法。 确保不要在每一步之后撤消更改,这样即使不止一个导致问题,您也可以识别它们。

联系您的房东

如果您已尝试使用所有可用策略对 HTTP 500 内部服务器错误进行故障排除,您可以联系您的托管服务提供商。 有时问题出在托管服务端,您可能无法控制。 但是,最好通过上述方法排除 WordPress 根目录中的问题。

他们将能够查看服务器日志并确定错误的真正原因。 大多数优秀的托管服务提供商都会有一个优秀的客户支持团队来帮助您解决真正的服务器问题。

通常,内部服务器错误对于 WordPress 初学者来说可能是一种令人沮丧的体验。 正是由于错误的模糊性,它通常需要专家来确定错误的根本原因。 如果您不希望此类问题再次发生,您可以随时选择流行的 WordPress 维护服务提供商之一的服务。

如果您喜欢视频版本,请查看以下视频:

进一步阅读

  • 如何修复常见的 WordPress 登录错误?
  • 如何保护 WordPress 登录页面?