什么是500内部服务器错误?如何修复500内部服务器错误
多个因素可能会触发500内部服务器错误,包括不当的访问权限、错误的文件所有权、.htaccess或php.ini中的错误、故障脚本、过时或不兼容的插件/主题,以及PHP版本冲突。 要确定问题的根本原因,最好查看cPanel中的错误日志。
- 服务器500错误示例
- 500错误的可能原因
- 不当权限,组可写
- 故障插件和主题
- 错误的.htaccess,无效的代码、命令或语法
- 配置不当的php.ini
- 不兼容的PHP版本
- 故障排除指南
- 检查错误日志
- 故障排除文件权限
- 故障排除索引文件
- 故障排除故障插件和主题
- 故障排除.htaccess
- 故障排除PHP版本不兼容
- 总结
服务器500错误示例
服务器500错误通常看起来像这样:
内部服务器错误
服务器遇到内部错误或配置问题,无法完成您的请求。
请联系服务器管理员,webmaster@example.com,并告知他们错误发生的时间以及您可能做过的任何可能导致错误的操作。
有关此错误的更多信息可能在服务器错误日志中可用。
此外,在尝试使用ErrorDocument处理请求时遇到了500内部服务器错误。
500错误的可能原因
不当权限,组可写
不当权限错误可能看起来像这样:
[Sun Jun 05 12:03:22 2012] [error] [client 66.249.72.82]
Application.cpp:601中的SoftException:目录“/home/exampleuser/public_html”可由组写入
在这种情况下,文件夹的权限设置过高。要解决此问题,需要将权限从“777”更改为“755”。 完整的说明在下面的故障排除部分中提供。 要了解更多信息,请参见设置文件和用户权限以及更改文件权限的文章。 其他选项是使用FTP客户端或在SSH/bash中使用chmod命令。有关SSH协议的更多信息,请查看以下文章:
- 什么是SSH访问以及如何在您的托管帐户中启用它
- 什么是SSH连接 - 如何在PuTTY、Mac和Linux中编辑
故障插件和主题
您在WordPress网站上遇到的500错误页面可能是由故障插件或主题引起的。在检查故障主题之前,您可能需要确定哪个插件导致了500错误。要识别有问题的插件,请禁用它,然后刷新您的网站。查看错误是否再次出现。如果没有插件导致错误页面,请将主题更改为默认主题。请参见下面的详细说明。 在进行任何更改之前,请确保备份您的网站。
错误的.htaccess,无效的代码、命令或语法
在.htaccess文件(“点htaccess”)中,您可能添加了措辞不当或冲突的行。故障排除的最佳方法是注释掉.htaccess中的行。 您可以通过在行的开头添加#来注释.htaccess中的一行。在进行更改之前,保存任何文件的原始副本是明智的。 例如,如果.htaccess看起来像这样:
DirectoryIndex default.html
AddType application/x-httpd-php5 php
那么可以尝试如下:
DirectoryIndex default.html
#AddType application/x-httpd-php5 php
损坏的行和以php_flag开头的行是最常见的错误。如果您无法确定哪一行是问题所在,则可以注释掉每一行。
其他常见的.htaccess错误
FollowSymlinks
错误可能看起来如下:
[Sun Jun 05 12:07:10 2011] [alert] [client 66.249.72.82]
/home1/examplec/public_html/.htaccess:不允许在此处使用选项FollowSymlinks
在这个例子中,错误很容易修复;在指定的文件中,使用一个允许的指令——在这种情况下,使用“SymlinksIfOwnerMatches”代替“FollowSymlinks”,或者完全删除该行。
语法未关闭
错误可能看起来如下:
[Sun Jun 05 12:11:38 2011] [alert] [client 66.249.72.82]
/home1/examplec/public_html/.htaccess:/home1/examplec/public_html/.htaccess:3:<IfModule>ExampleRule/Module>未关闭。
同样,解决方案是修复语法或简单地删除它。在这种情况下,正确关闭结束的“</IfModule>”指令,并将规则放在自己的行上以解决问题。 这些只是一些常见示例,错误的.htaccess参数可能导致的问题。您遇到的情况可能会有所不同。然而,通常情况下,错误消息足够描述性,可以在不进一步调查的情况下确定错误。
配置不当的php.ini
ForceType
当您使用的文件具有(或不具有)与该文件类型的正常扩展名不同的扩展名时,可以在您的.htaccess文件中使用ForceType来明确告诉服务器如何处理该文件(或文件夹中的所有文件)(这在没有phpsuexec的服务器上有效)。
例如:当您有一个名为“item”的文件(如Nucleus用于FancyURLs)并希望服务器将其解析为PHP时,您可以在.htaccess文件中使用以下代码:
ForceType application/x-httpd-php
然而,由于我们的服务器使用phpsuexec,这将导致内部服务器错误。要解决此问题,您可以简单地使用SetHandler代替ForceType,因此您的.htaccess文件变为:
SetHandler application/x-httpd-php
php_value
在没有phpsuexec的服务器上,可以在.htaccess文件中使用php_value语句来更改php的设置(实际上是覆盖php.ini中的设置)。这也会导致在使用phpsuexec的服务器上出现服务器错误。
要解决此问题,您可以使用php.ini文件,将其放在与您将放置.htaccess文件相同的文件夹中。您可以通过编辑php.ini文件来配置PHP行为。只需包含您打算更改的设置。例如,关闭short_open_tag需要在文件中添加short_open_tag = Off。
使用php.ini文件的结果如下:
[PHP]
short_open_tag = Off
不兼容的PHP版本
由于PHP版本偶尔会升级,多个网站的响应可能会有所不同。有可能其中一些网站可能会遇到500错误页面。此升级是我们持续努力为客户提供最佳产品和服务的一部分。除了改善数据处理,可以提高网站的速度和性能,更新的PHP版本还提供了更高的安全性。较新版本的PHP有更频繁的安全更新,以帮助保护网站免受不必要的黑客攻击或恶意软件的侵害。 与您的网站兼容的PHP版本将取决于您网站的组件,例如主题或插件。在更改PHP版本之前,请确保检查您的主题或插件的信息页面。更好的是,在更新(或降级)PHP版本之前,先备份您的网站。如果您不确定,您可能需要联系您的网页开发人员。
故障排除指南
请参阅下面所有可能的故障排除方法,以修复500内部服务器错误。 在对现有网站进行任何更改之前,强烈建议您先备份数据库。
检查错误日志
- 打开文件管理器。
- 在网站的目录或文档根目录中找到错误日志:/home/cpanel_user/public_html/error_log,用于主域名。
- 如果您不熟悉读取错误日志,请参见错误日志。
- 如果没有错误需要故障排除,请查看WordPress Codex文章,了解如何在WordPress中启用调试。
故障排除文件权限
- 登录到您的Bluehost帐户管理器。
- 点击左侧菜单中的托管选项卡。
- 查找您需要管理的托管套餐的名称。
- 如果您在帐户中只有一个托管套餐,您将立即被引导到托管概述页面。
- 如果您在帐户中有多个托管套餐,请点击您需要管理的托管套餐上的管理按钮。
- 转到文件与访问选项卡,并在文件管理器图块上点击管理。

- 进入文件管理器后,点击屏幕右上方的权限。

- 您将被提示在一个窗口中进行编辑,该窗口看起来像这样:
- 对于文件夹权限,尤其是在处理诸如cgi-bin之类的位置的脚本执行时,使用755。对于标准文件,如HTML页面、图像和媒体,推荐设置为644。
- 文件 - 644
- CGI脚本 - 755
- 目录 - 755
如果您需要更改权限,请在cPanel仪表板的“文件”区域导航到文件管理器。

故障排除索引文件
如果在error_logs中没有任何内容,请检查根目录是否有多个索引文件,因为这可能是问题的根源。 如果默认文件(如index.html、index.php或default.html)为空,则可能会出现白屏死机。检查目录索引并确认文件是否有实际内容至关重要。
- 要检查,请打开文件管理器。
- 选择您正在处理的域的文件夹。
- 在域的主文件夹中搜索任何存在的索引文件,除了index.php。
- 如果存在其他索引文件,请暂时重命名它们(以便它们不被识别为索引文件)。
如果这解决了问题,客户必须将重复的索引文件移到其他地方。
故障排除故障插件和主题
有关详细说明,请查看如何在WordPress中禁用/删除主题和插件的文章。 要通过WordPress仪表板停用插件,请按照以下步骤操作。
- 登录到WordPress仪表板。
- 点击左侧菜单中的插件。
- 从列表中找到插件。如果插件处于活动状态,请点击停用。

- 您可以选择停用的原因并点击提交按钮,或者直接点击关闭此窗口并停用(插件名称)。

要通过phpMyAdmin停用插件,请按照以下步骤操作。
- 登录到帐户管理器。
- 点击左侧菜单中的网站选项卡。
- 在概述选项卡下,点击下面的PHPMyAdmin按钮。

- 找到并点击数据库以查看表。

- 点击以“options”结尾的表名。

- 通过点击“option_id”列标题对“options”表进行排序。这样应该会将active_plugins放在表的第二页。active_plugins的选项ID为34。

- 点击active_plugins行上的编辑链接,然后清除option_value框中的所有文本。

- 向下滚动并点击转到按钮。

要在WordPress中停用主题,请按照以下步骤操作。
- 登录到WordPress仪表板。
- 点击左侧菜单中的外观。
- 找到并将鼠标悬停在主题上以查看主题详细信息选项,然后点击主题详细信息。

- 确认您要删除该主题。

要在WordPress中更改主题,请按照以下步骤操作。 以下说明将解释如何在不使用WordPress仪表板的情况下更改WordPress中的主题设置。
- 登录到帐户管理器。
- 点击左侧菜单中的网站选项卡。
- 在概述选项卡下,点击下面的PHPMyAdmin按钮。

- 找到并点击数据库以查看表。

- 点击以“options”结尾的表名。

- 在options表中,找到template和stylesheet的行。
- 点击编辑以将theme和stylesheet的option_value更改为您首选的主题。这应该是wp-content/themes中包含您要使用的主题的文件夹的确切、区分大小写的名称。

- 向下滚动并点击转到按钮。

故障排除.htaccess文件
如果您已经排除了主题和插件,您可以继续检查.htaccess。
- 要访问此文件,请打开文件管理器并在URL末尾添加**&showhidden=all**。
- 选择指向您正在处理的域的文件夹。
- 将当前的.htaccess重命名为**.htaccess(当前日期)**。这将禁用当前的.htaccess。
- 现在,您需要使用默认设置设置一个新的.htaccess文件,以确保网站正常运行。
- 从主文件管理器工具栏(最左侧)点击新文件。
- 将新文件命名为**.htaccess**。
- 打开代码编辑器并添加以下代码:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ -[L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
- 完成后点击保存更改按钮。
- 当**.htaccess文件是错误的来源时,使用第6步中的通用版本**可能会恢复对网站的访问。
- 如果在更新**.htaccess**后网站没有恢复,请放弃新版本并将原始文件重命名为.htaccess以恢复之前的设置。
故障排除PHP版本不兼容
验证所使用的PHP版本是否是当前的并适合您的代码库。切换到不同的版本可能会解决与兼容性相关的任何问题。有关详细说明,请查看最新支持的PHP版本是什么?文章。 要在您的帐户管理器中查看和更新PHP版本,请按照以下步骤操作。
- 登录到您的Bluehost帐户管理器。
- 点击左侧导航中的网站选项卡。
- 点击您想要更新的网站的设置按钮。
- 接下来,点击高级选项卡。
- 在高级页面下,查找PHP版本部分,您将看到网站当前的PHP版本。
- 点击更改版本按钮。
- 从下拉菜单中选择一个PHP版本,然后点击应用。
- 刷新您的网站并检查错误是否消失。
总结
您可能会遇到500内部服务器错误的原因有很多。最常见的一些原因包括不当的文件权限、故障的插件或主题、问题的.htaccess文件、配置不当的php.ini文件或不兼容的PHP版本。本指南提供了逐步说明,帮助您识别和故障排除这些可能的原因。请记住,在进行任何更改之前,始终备份您的网站。