apache似乎忽略了CGI脚本返回"Internal Server Error"



我正在编写一个Python CGI脚本,并在需要返回状态:500内部服务器错误时尝试测试系统的行为。

我的脚本是这样的:

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

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

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

似乎 apache 以某种方式忽略了从(我的(CGI 脚本返回的状态。我已经搜索了答案,但找不到任何东西。

为了清楚起见,CGI在任何其他方面都在此服务器上运行良好。

有什么想法吗?我错过了什么吗?

坦斯克,

阿米特

回答自己:看来我吠错了树。基于一些线索和更多的经验结果,似乎当将请求传递给外部脚本(例如 cgi 脚本、php 等(时,Apache 服务器希望外部脚本处理任何错误,并且外部脚本负责返回包含错误代码和错误消息的文档。外部脚本还负责记录错误(通常将其打印为标准错误就足够了,并且它将被 apache 选中并写入其错误日志(。

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

我还没有找到官方来源,但也许我不知何故忽略了它。

相关内容

最新更新