apache似乎忽略了CGI脚本返回的“内部服务器错误”

时间:2018-07-01 18:21:59

标签: apache cgi

我正在编写Python CGI脚本,并在需要返回状态:500 Internal Server Error时尝试测试系统的行为。

我的脚本是这样的:

#!/usr/bin/env python3                                                                    
print("Content-type: text/html")
print("Status: 500 Internal Server Error")
print()

运行此脚本时,apache访问日志中有一个报告,代码为500,但错误日志中未报告该报告。我也没有在浏览器中看到“ 500页”。

如果内部错误是由其他方式引起的(例如,无法执行的脚本或包含错误的HTTP标头的脚本),我确实会收到内部服务器错误的“正常”行为。

似乎apache忽略了(我的)CGI脚本返回的状态。我一直在寻找答案,但找不到任何东西。

为清楚起见,CGI在任何其他方面都可以在该服务器上正常工作。

有什么想法吗?我想念什么吗?

坦斯克,

授予

1 个答案:

答案 0 :(得分:0)

对自己的答案:看来我在吠错树。根据一些线索和更多的经验结果,似乎当将请求传递给外部脚本(例如cgi脚本,php等)时,apache服务器希望该外部脚本处理任何错误,这是外部脚本的责任返回包含错误代码和错误消息的文档。外部脚本还负责记录错误(通常足以将其打印为标准错误,并且将由apache提取并写入其错误日志中)。

因此,例如,如果我的cgi脚本需要报告“内部服务器错误”,仅返回标头是不够的(请参见我的问题),但是它应该以HTML格式创建并返回整个错误消息。格式。此外,它应该将错误消息打印为标准错误。

我还没有找到官方的消息来源,但也许我以某种方式忽略了它。