【问题标题】:apache seems to ignore "Internal Server Error" returned by CGI scriptapache 似乎忽略了 CGI 脚本返回的“内部服务器错误”
【发布时间】:2018-12-10 01:46:41
【问题描述】:

我正在编写 Python CGI 脚本并尝试在需要返回 Status: 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 在其他任何方面都可以在此服务器上正常工作。

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

谢谢,

阿米特

【问题讨论】:

    标签: apache cgi


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 2010-11-30
      • 2016-10-13
      • 2011-01-26
      • 1970-01-01
      • 1970-01-01
      • 2013-09-17
      相关资源
      最近更新 更多