如何修复HTTP错误代码“ 500内部服务器错误”

2020年12月31日19:35:34 发表评论 50 次浏览

了解如何修复HTTP错误代码" 500内部服务器错误"。此错误表示服务器端存在问题。这是一个万能的错误, 这意味着一个严重的问题正在阻止你的网站正常运行。

刷新页面

遇到此错误时, 要做的第一件事是稍等片刻, 然后刷新页面。有时, 此错误是在服务重新启动时引起的, 而你恰巧在错误的时间捕获了它。如果刷新页面后问题仍然存在, 请继续进行故障排除。

检查你的服务器日志

你的第一站应该是网站的错误日志。在Linux服务器上, 主网站错误日志的默认位置是/ var / log / httpd / error_log.

如果你的服务器上托管了多个网站, 则它们可能会有自己的错误日志。这些日志文件的位置将在站点的Apache配置中指定。这些通常位于网站的/ logs /目录。

如果错误日志很大, 则可能很难找到正确的行。如果你知道某个特定脚本导致了错误, 则可以使用以下命令在文件中搜索该脚本名称:

more /var/log/httpd/error_log | grep 

这将返回其中包含文件名的所有行。

如果不确定是什么原因引起的错误, 则可以在一个窗口中跟踪错误日志, 并观察错误的产生。首先, 在你的SSH会话中, 使用以下命令:

tail -f /var/log/httpd/error_log

在不关闭SSH会话的情况下, 转到Web浏览器并刷新页面以再次生成500错误。你应该看到错误出现在日志文件中。

你还可以使用以下命令查看错误日志中的最后10行:

tail -20 /var/log/httpd/error_log

找到错误后, 将其复制并粘贴到Google通常会产生有用的结果。

检查权限

你网站的文件或文件夹的权限问题可能导致HTTP 500错误。检查所有主文件夹和脚本的权限。大多数Perl和CGI文件都需要将其权限设置为755.

要检查Linux系统上文件的权限, 请通过SSH连接到服务器, 然后转到保存文件的目录。使用ll命令列出所有文件和文件详细信息。

使用ll命令列出Linux文件的权限
使用ll命令列出Linux文件的权限

第一个字母块列出了文件的权限。共有三个权限级别:

  • 读(r)
  • 写(w)
  • 执行[x)

权限以三组的形式显示:

  • 第1组:所有者
  • 第2组:组
  • 第三组:世界(所有人)

在上面的示例中, 第一个文件(test.cgi)拥有所有者的读/写/执行权限, 但只有组和世界的读/写权限(755)。

第二个文件(test.py)具有所有者, 群组和世界(777)的读/写/执行权限。

更改权限

要更改文件的权限, 你需要使用chmod命令, 以及要设置的权限级别的数值。最常见的权限级别为:

  • 7:读, 写和执行(rwx)
  • 5:读取并执行(r-x)
  • 0:无(-)

大多数脚本都需要所有者的读/写/执行权限, 以及组和世界的读/执行权限。要在文件上设置此命令, 请使用以下命令:

chmod 755 [filename]

如果在运行脚本时仍收到错误, 请尝试将其设置为全局读取/写入/执行权限以进行测试。要在文件上设置此命令, 请使用以下命令:

chmod 777 [filename]

此权限级别可能有风险, 因为它允许任何人重写你的文件。完成故障排除后, 请确保将文件设置回正确的权限。

检查你的脚本

如果你的网站依赖脚本(例如Perl或CGI文件), 则可能会出错。始终先检查文件权限。如果正确, 请检查脚本本身。

  • 它们在正确的位置并正确命名了吗?验证脚本未被意外移动, 删除或重命名。
  • 文件路径正确吗?许多脚本将需要其他文件和程序才能运行。例如, 如果你有一个Perl脚本, 它将以Perl的路径开头。你可以使用which命令通过以下命令找到Perl的路径(或任何其他编程语言或命令):

    哪个Perl

  • 脚本是否有权在它们所在的文件夹中运行?你可能想要找到一个简单的测试脚本来进行检查。
  • 确保测试脚本与要进行故障排除的语言相同, 并且使用相同的文件扩展名。例如, 如果你在使用名为myfile.py的Python脚本时遇到麻烦, 请搜索Python测试脚本, 然后为该文件指定.py文件扩展名。使用Perl测试脚本或以.cgi结尾的Python测试脚本作为测试无效。
  • 脚本是最近在Microsoft Word或Wordpad等文字处理程序中编辑的吗? CGI程序和其他脚本只能使用记事本之类的文本编辑器进行编辑。要解决此问题, 请找到脚本的全新副本, 然后使用文本编辑器(例如, 记事本(对于Windows)或BBEdit(对于Mac))。

检查Apache文件

Apache配置问题可能导致HTTP 500错误。如果你的脚本或CGI程序生成500错误, 请检查以确保它们具有在其所在目录中运行的权限。

默认情况下, Apache不允许程序执行。权限必须在任一.htaccess程序运行目录中的文件, 或网站主Apache配置文件中的文件。

使用.htaccess文件授予权限

你可以使用逐个目录授予可执行权限.htaccess文件。

注意:由于文件名以句点开头, 因此从基本目录中隐藏文件ls从命令行搜索。要列出目录中的文件(包括以句点开头的文件), 请使用以下命令:

ls -la

编辑现有文件, 或者在目录中创建一个(如果不存在)。你也可以在台式计算机的记事本中创建此文件, 然后使用FTP将其上传到你的网站。

该文件将需要具有以下行:

Options +ExecCGI

你还将需要一行内容来告诉Apache如何运行以Python, PHP, Perl等语言编写的脚本。自定义此行以添加文件正在使用的扩展名(.py, .php, .pl等)。

AddHandler cgi-script .cgi .py .php .pl

.htaccess文件正在读取吗?

如果你有.htaccess正确设置的文件, 但仍然出现HTTP 500错误, 问题可能是.htaccess文件被忽略。

为了.htaccess文件正常运行, 则需要配置Apache以使其运行。

检查网站的主要Apache配置文件。对于服务器上的主域, 通常为:

  • Ubuntu和Debian:/etc/apache2/apache2.conf
  • CentOS 7:/etc/httpd/conf/httpd.conf

对于服务器上托管的其他域, 文件的位置和名称将取决于域的设置方式。

编辑此主配置文件, 找到与你要添加目录的目录有关的块。.htaccess文件。例如, 主目录的默认文档根目录可能是:

<Directory "/var/www/html">

在此块中, 查找AllowOverride组态。设置为:

AllowOverride All
服务器错误代码500
服务器错误代码500

对主要Apache配置文件进行更改后, 请重新启动Apache以使更改生效:

  • Ubuntu和Debian:使用命令服务apache2重新启动.
  • CentOS 7:使用命令systemctl重新启动httpd.

超时错误

如果你有调用外部网络或资源的脚本, 则这些连接超时时可能会导致HTTP 500错误, 通常是因为资源不可访问。检查你的外部资源以确保它们可以访问。

一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: