我正在编写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在任何其他方面都可以在该服务器上正常工作。
有什么想法吗?我想念什么吗?
坦斯克,
授予
答案 0 :(得分:0)
对自己的答案:看来我在吠错树。根据一些线索和更多的经验结果,似乎当将请求传递给外部脚本(例如cgi脚本,php等)时,apache服务器希望该外部脚本处理任何错误,这是外部脚本的责任返回包含错误代码和错误消息的文档。外部脚本还负责记录错误(通常足以将其打印为标准错误,并且将由apache提取并写入其错误日志中)。
因此,例如,如果我的cgi脚本需要报告“内部服务器错误”,仅返回标头是不够的(请参见我的问题),但是它应该以HTML格式创建并返回整个错误消息。格式。此外,它应该将错误消息打印为标准错误。
我还没有找到官方的消息来源,但也许我以某种方式忽略了它。