Apache 一台服务器(而不是另一台服务器)上的脚本头过早结束

Apache 一台服务器(而不是另一台服务器)上的脚本头过早结束,apache,unix,Apache,Unix,我有两台服务器。它们都运行相同的代码,并且连接到相同的数据库。但是,当我进行某个ajax调用时,一个服务器工作正常,另一个抛出一个内部服务器错误。在内部服务错误服务器的Apache日志中,它显示“脚本头过早结束”。这让我觉得一台机器上有一些Apache错误,但两台机器上的Apache文件夹看起来是相同的 服务器之间的什么样的差异会导致抛出此错误?此错误告诉您,没有在应该输出的位置输出标题。通常情况下,cgi脚本由于某种原因失败,因此不输出任何内容,或者在输出头之前输出内容 调试:查看apache

我有两台服务器。它们都运行相同的代码,并且连接到相同的数据库。但是,当我进行某个ajax调用时,一个服务器工作正常,另一个抛出一个内部服务器错误。在内部服务错误服务器的Apache日志中,它显示“脚本头过早结束”。这让我觉得一台机器上有一些Apache错误,但两台机器上的Apache文件夹看起来是相同的


服务器之间的什么样的差异会导致抛出此错误?

此错误告诉您,没有在应该输出的位置输出标题。通常情况下,cgi脚本由于某种原因失败,因此不输出任何内容,或者在输出头之前输出内容

调试:查看apache错误日志。它很可能会告诉你哪里出了问题


要查找错误日志:请在apache配置文件中查找ErrorLog指令。

该错误告诉您,在应该输出头的位置没有输出头。通常情况下,cgi脚本由于某种原因失败,因此不输出任何内容,或者在输出头之前输出内容

调试:查看apache错误日志。它很可能会告诉你哪里出了问题


查找错误日志:在apache配置文件中查找ErrorLog指令。

Swa66等提供了很好的答案,但我想在您查看apache错误日志后,我会添加更多内容,这些日志将为您提供返回的文本,其中apache需要一个有效的http头

您提到服务器正在响应Ajax查询,因此可能存在某种CORS问题或与Apache如何配置以允许HTTP头传递到CGI进程有关的问题。 作为ajax服务的一部分包含JWT或其他auth头并不少见,您可能会发现需要添加一个.htaccess文件,以允许这些文件通过

检查工作服务器以查看headers模块是否已启用(-httpd.conf-LoadModule headers\u module libexec/apache2/mod\u headers.so中的类似内容)

还要查找与头相关选项的.htaccess或特定于域的配置。如果需要,可以深入了解ApacheCors配置和头相关问题

您可能需要一些类似于以下内容的配置

.htaccess

SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
Header set Access-Control-Allow-Origin "*"
如果没有更具体的诊断,确定您的问题有点困难。也许您可以从浏览器中提供调试器详细信息,描述Ajax/XHR请求,包括来自apache的标题等和相关错误日志条目。假设您使用的是Perl/CGI,可能是描述配置中的CGI配置的片段,以及工作服务器和出错服务器上的任何.htaccess文件

您可能还希望快速检查可执行文件的权限,并尝试从命令行运行它们


它可能是一个非常基本的配置选项,如中所述。。我们真的需要更多的诊断细节来关注可能的原因。

Swa66等提供了很好的答案,但我认为在您查看apache错误日志后,我会添加更多内容,这些日志会为您提供apache希望使用有效http头时返回的文本

您提到服务器正在响应Ajax查询,因此可能存在某种CORS问题或与Apache如何配置以允许HTTP头传递到CGI进程有关的问题。 作为ajax服务的一部分包含JWT或其他auth头并不少见,您可能会发现需要添加一个.htaccess文件,以允许这些文件通过

检查工作服务器以查看headers模块是否已启用(-httpd.conf-LoadModule headers\u module libexec/apache2/mod\u headers.so中的类似内容)

还要查找与头相关选项的.htaccess或特定于域的配置。如果需要,可以深入了解ApacheCors配置和头相关问题

您可能需要一些类似于以下内容的配置

.htaccess

SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
Header set Access-Control-Allow-Origin "*"
如果没有更具体的诊断,确定您的问题有点困难。也许您可以从浏览器中提供调试器详细信息,描述Ajax/XHR请求,包括来自apache的标题等和相关错误日志条目。假设您使用的是Perl/CGI,可能是描述配置中的CGI配置的片段,以及工作服务器和出错服务器上的任何.htaccess文件

您可能还希望快速检查可执行文件的权限,并尝试从命令行运行它们


它可能是一个非常基本的配置选项,如中所述。。我们确实需要更多的诊断细节来关注可能的原因。

脚本头过早结束
只是意味着CGI脚本在输出头之前开始输出一些信息,这是可能的,因为脚本中有一个错误。但是为什么相同的脚本会在一台服务器上导致错误,而在另一台服务器上不会导致错误?因为,显然,环境是不相同的?设置、文件系统、httpd配置差异?我有一个确切的问题。有没有找到解决方案?@DerrellDurrett这对我来说真是个愚蠢的错误。我无意中删除了一个文件夹。服务器实际上并不完全相同。
脚本头过早结束
仅仅意味着CGI脚本在输出头之前开始输出一些信息,这可能是由于脚本中的错误。但是为什么相同的脚本会在一台服务器上导致错误,而不是在另一台服务器上?因为,显然