修复网站上的 HTTP 500 内部服务器错误

阿里云服务器

当服务器遇到无法立即解释的错误时,您将看到此通用消息。

清除网站上的 500 内部服务器错误的过程与确定周五的晚餐计划非常相似。

一切都取决于你如何想出各种可能的解决方案 — — 披萨、意大利面、麦片? — — 直到你解决服务器问题。

在本指南中,我们将介绍 500 内部服务器错误的含义,并向您介绍一些可能的原因。然后,我们将为您提供 10 条提示,帮助您让网站恢复正常运行。

让我们开始吧!

了解 HTTP 500 内部服务器错误及其重要性

正如我们之前提到的,500 内部服务器错误可能非常不具体,令人沮丧。

当它发生时,你无法获得太多详细信息。事实上,你可能根本收不到任何信息。尽管它的名字如此,但问题可能与服务器无关。它也可能与你的网站或浏览器有关。

HTTP 500 错误通常仅表示问题与其他错误代码不匹配,例如 300、400 甚至其他 500 代码之一。

无论错误意味着什么,尽快找出原因都很重要,因为当您的网站瘫痪时,您可能会失去潜在的流量和销售。如果网站瘫痪一段时间,也会对您努力完善的搜索引擎优化 (SEO)产生负面影响。

如果您的网站在离线状态下被抓取,Google 可能会将该错误解读为您的网站存在问题。

此错误还会损害您的用户体验 (UX),让访问者觉得您的网站不专业,或者更糟的是……不值得信任。糟糕的用户体验不仅会影响您的 Google 排名,还会导致您失去客户。毕竟,如果您的网站无法访问,您就无法开展业务!

HTTP 500 错误可能由多种不同原因引起,因此解决起来有些麻烦。话虽如此,500 内部服务器错误的潜在原因包括:

  • WordPress网站的插件兼容性问题。

  • 文件损坏。

  • 编码或语法错误。

  • PHP内存限制已耗尽。

幸运的是,您只需一点支持,就可以自行解决其中许多问题。(我们很快就会提供。)

此 500 错误的变体

根据您的操作系统、浏览器和错误原因,500 错误的显示方式会有所不同。例如,您可能会看到类似以下内容:

QQ图片20240727155711.png

纯白屏幕,有时也称为死机白屏 (WSoD),有时也可能表示 500 内部服务器错误。

另外,请注意,许多网站所有者可以选择自定义 500 错误消息。因此,您可能会看到许多不同形式的错误消息。

修复 500 错误代码的 10 种方法

现在您已经了解了 500 内部服务器错误,现在是时候讨论如何解决它了。

我们将从更容易理解的解决方案开始,然后再讨论技术上更复杂的解决方案。

1.尝试重新加载页面

让我们从最简单、最好的情况开始。

某些情况会导致 500 内部错误在几分钟内自行消除。

例如,如果您刚刚更改了WordPress 网站上的插件或主题,或者您的主机遇到了异常大的流量,您可能会看到服务器错误。如果您的情况确实如此,那么您很幸运!

简单重新加载页面即可恢复正常。

因此,您应该尝试做的第一件事就是等待一两分钟,在此期间错误可能会自行解决。然后,您可以尝试按F5或(如果您使用的是 Mac,则按command + R )重新加载页面。

2. 清除浏览器缓存

Another potentially quick and easy way to solve the 500 status code is clearing your browser cache. It’s possible the cache became corrupted, which would cause problems when attempting to access any website. And not just your own.

First things first, you might want to check the handy dandy site Down For Everyone Or Just Me. This will let you know if it’s a widespread problem or if you’re the only one having problems.

If you’re alone in your 500 error frustration, the problem could very well be your browser. In this case, try accessing your site from a different browser. If an alternative works, it’s a sign that the issue is with your cache.

In most browsers, you can start the process of clearing your cache by pressing Ctrl + Shift + Delete.

在 Google Chrome 中,您可以点击 右上角的三个垂直点。然后,在菜单中找到清除浏览数据,进行选择,然后点击清除数据按钮。

QQ图片20240727155859.png

清除浏览器缓存后,您可以再次尝试访问您的网站。

但如果您仍然看到 500 内部服务器错误,那么是时候进行更复杂的修复了。

3. 备份您的网站

在开始进行修改之前,最好先备份您的网站。

如果DreamHost托管您的网站,您可以利用我们的一键备份功能。如果没有,或者由于 500 错误而无法登录,请不要担心。您仍然可以创建手动备份。

为此,您需要保存网站文件和数据库的副本。

首先,在您的网站托管账户中查找您的安全文件传输协议 (SFTP)凭证。如果您不确定在哪里可以找到它们,请向您的托管商询问详细信息。

接下来,下载您选择的 SFTP 客户端。我们喜欢FileZilla。然后,使用您刚刚获取的凭据连接到您的服务器。

QQ图片20240727155947.png

现在,您必须在 FileZilla 中创建用于保存备份文件的文件夹。右键单击左上象限,选择“创建目录”,然后命名新文件。

接下来,您只需将要保存的文件从右上象限拖到左侧的新文件夹中即可。如果您不确定要选择什么,请抓取包含您网站名称的整个文件夹。

您启动的下载可能需要一些时间,但一旦完成,您就可以继续备份数据库!

我们将向您展示如何使用 WordPress 执行此操作。

返回您的主机帐户,找到并登录phpMyAdmin 工具。在左侧边栏中找到并选择您的网站数据库。这将打开您的数据库。

现在,导航到屏幕顶部的“导出”选项卡。选择“快速”方法并点击“导出”按钮。

下载完成后,您已完全备份!

QQ图片20240727160101.png

4. 访问您的错误日志

您网站的错误日志可能会让您了解导致 500 错误的原因。根据您的主机,这些日志可能会经常循环,因此您需要尽快查看 — 即使这样,您可能也找不到所需的信息,但值得一试!

您可以通过 SFTP 再次访问您网站的文件并打开日志文件来检查您的错误日志。

QQ图片20240727160152.png

在这里,选择出现错误的站点。您可能会看到多个目录。下载日期最新的目录。

您可以使用您喜欢的文本编辑器打开刚刚下载的文件来查看日志条目。希望您找到的内容能为您提供有关 500 错误的更多背景信息。

如果您是 WordPress 用户,另一个不错的选择是启用 WordPress 调试日志。您可以通过 SFTP 连接到您的站点,打开上面有您的站点名称的文件,然后在其中找到wp-config.php文件来执行此操作。

在其中查找以下行(在 Mac 上按 command + F或在 Windows 上按 Ctrl+Shift+F会有所帮助):

define('WP_DEBUG', false);

QQ图片20240727160243.png

找到后,将其替换为以下内容:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', true );

这将创建一个debug.log文件,您可以在/wp-content/目录下找到它。完成故障排除后,请务必将WP_DEBUG值改回false 。

5. 检查“建立数据库连接时出错”

如果您的错误是由于建立数据库连接的问题而导致的,那么您的网站不仅将无法供访问者访问,而且您也将无法访问WordPress 管理仪表板。

造成这种情况的原因可能有以下几个:

数据库登录凭据不正确。

损坏的网站数据库。

损坏的网站安装文件。

让我们从错误的登录凭据开始,因为这是数据库连接错误的常见原因。如果您是 DreamHost 用户,您可以在面板中找到您的数据库凭据。即使您使用其他主机,您也可能会遵循类似的程序。

导航到MySQL 数据库,然后在“此服务器上的数据库”部分下找到与您的网站相对应的数据库。在这里,您会在“数据库”标题下找到您的数据库名称。用户名列在“用户访问”列下。

要查找密码,请点击用户名。在下一个屏幕上,向下滚动并点击密码字段旁边的显示按钮。

接下来,您需要将这些凭据与wp-config.php文件中的凭据进行比较。

您会记得上一步的内容,您可以通过 SFTP 访问您网站主目录中的此文件。找到包含您网站名称的文件,然后找到其中的wp-config.php文件。打开或下载该文件,然后验证MySQL 设置下的信息是否与您在面板中找到的信息相符。

QQ图片20240727160333.png

您可以通过返回phpMyAdmin来快速修复它。登录并单击左侧面板中的数据库。使用下方的“全部选中”框选择数据库中的所有表。在右侧的下拉列表中,在“表维护”下,选择“修复表”。在继续之前,请确保您有一个可用的备份(参见步骤 3)。

最后,让我们看看如何处理损坏的网站安装文件。回到我们的 WordPress 网站作为示例,首先下载新的 WordPress 副本并解压缩文件。

接下来,通过 SFTP 访问您的站点文件,并删除wp-content文件夹和wp-config-sample.php文件。

最后,通过 SFTP 将其余文件上传到您的网站,覆盖任何现有文件。

结果如何?您现在拥有一个全新的、未损坏的 WordPress 安装!

为了确保此更新生效,请清除浏览器缓存,然后再次检查您的网站是否存在错误。

6.查找权限错误

如果您的任何文件的权限设置不正确,则会抛出 500 内部服务器错误。同样,您可以使用 SFTP 检查和更改这些权限。

在包含您网站名称的文件中,右键单击任意文件,然后选择文件权限(在 DreamHost 中,这称为 CHMOD,旁边有一个钥匙图标)以打开一个新的对话框窗口。在此窗口中,您可以检查文件权限,并在必要时为其设置新权限。

通常,您需要将文件设置为644,将目录和可执行文件设置为755。

如果您不确定正确的值,您应该咨询您的主机。

7.增加PHP内存限制

您可能会看到 500 内部服务器错误的另一个原因是您超出了服务器的PHP 内存限制。有几种方法可以增加您的限制,它们都涉及使用 SFTP。

在尝试增加内存限制之前,您可能需要先查看其当前的设置。

对于 WordPress 网站,您可以通过 WordPress 管理仪表板执行此操作。请记住,如果出现某些 500 错误,您将无法访问仪表板。如果是这种情况,您可能必须跳过此步骤。

从您的 WordPress 仪表板,导航至工具>站点健康。

QQ图片20240727160453.png

单击屏幕顶部的“信息”进入“站点健康信息”页面,然后向下滚动到“服务器”部分。单击即可查看您的 PHP 内存限制。

QQ图片20240727160545.png

要增加 PHP 内存限制,您可以编辑几个文件。一个是.htaccess文件,通常位于您网站的根目录中,您可以通过 SFTP 导航到该文件。(注意:使用 Nginx 的托管计划可能不使用 .htaccess 文件。如果是这种情况,您可以跳过此步骤。)

打开文件并添加以下代码:

php_value memory_limit xxxM

你可以将“xxx”替换为你所需的内存量。通常,256M 就足够了。

您还可以通过编辑php.ini文件来增加内存限制。您应该能够在根目录中找到此文件。如果没有,您可以继续创建一个。将其代码添加或更新为以下内容:

memory_limit = xxxM

编辑php.ini文件后,请确保同时调整wp-config.php文件。虽然这些限制在技术上是分开的,但 PHP 限制不能低于 WP 内存限制。

为了解决这个问题,请将以下代码添加到wp-config.php文件的顶部:

define('WP_MEMORY_LIMIT', 'xxxM');

如果这解决了 500 错误,那么您的下一个任务就是找出导致内存限制耗尽的原因。

如果您使用的是 WordPress,则可能是插件或主题有问题。如需帮助查找准确的服务器诊断信息,您可能需要联系您的主机。

8.检查.htaccess 文件是否存在问题

我们多次提到的.htaccess文件是您的核心网站文件之一。此文件包含您的服务器规则,因此它也可能导致 HTTP 错误 500。

如果您的.htaccess文件已损坏,您需要继续创建一个新的文件。

首先通过 SFTP 登录您的网站并找到您的.htaccess文件。将文件重命名为.htaccess_old。

QQ图片20240727160645.png

现在,在文本编辑器中创建一个新的.htaccess文件并粘贴以下内容:

# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

将您新创建的.htaccess文件上传到您的网站。之后,刷新浏览器并查看是否出现错误消息。

9.查找 CGI/Perl 脚本中的编码或语法错误

如果您正在运行通用网关接口 (CGI) 脚本,则任何编码或语法错误都可能导致 500 错误。要发现 CGI 脚本的潜在问题,请使用安全外壳 (SSH)登录到您的站点。以下是使用 DreamHost 执行此操作的方法。

登录后,您可以使用以下命令排除 CGI 故障:

[服务器]$ ./cgi_name.cgi

在这种情况下,终端应该返回一般错误消息以及错误所在行号。从那里,您或您的开发资源就可以发挥您的编码魔力了!

使用 CGI 时,需要牢记一些最佳做法以避免出现问题。

首先,最好使用纯文本编辑器来确保保持 ASCII 格式。上传脚本时,您还应该能够在 FTP 客户端中选择ASCII模式。

QQ图片20240727160747.png

最后,如果需要的话,上传到你的服务器上的cgi-bin 目录。

然后,您可以在上传文件后仔细检查文件的权限。

10. 最后,询问你的网络主机有关潜在的服务器问题

如果其他方法都失败了,那么实际上可能存在服务器问题,只有您的主机才能确认。不幸的是,如果您的主机的服务器遇到问题,您可能需要等待网站停机一段时间。

如果您是 DreamHost 客户,您可以查看DreamHost 状态页面。此资源为您提供有关我们每项服务的所有信息。

如果您作为 DreamHost 客户尝试修复 500 内部服务器错误时遇到任何问题,您可以随时联系我们的技术支持团队。他们随时准备为您提供帮助!

如果您遵循本指南中的提示,您将已经获得大量有价值的信息,以帮助技术人员更快地解决您的问题!