我有一个CGI脚本,通常可以正常工作。
但是,在某些情况下,它可能会失败,从而导致退出代码非零。 有时,它会在失败之前输出标题等。
例如,输出可能是:
Content-Type: text/html; charset=utf-8
<empty body>
然后使用程序退出代码123。
目前,Apache将此视为HTTP 200,并乐意将空白页面返回给用户。
有没有办法让Apache将这样的程序失败视为错误?
我实际上曾认为在这种情况下会返回HTTP 500,但显然我错了(或者配置错误)。
答案 0 :(得分:1)
没有办法让mod_cgi / mod_cgid缓冲状态行/ headers / body以确保CGI最终成功退出。即使是一个空的身体,由于标题终止后立即写入状态行,所以为时已晚。
除了Apache的增强之外,你的CGI必须缓冲它自己的标准输出,或者你必须将它包装在缓冲所有标准输出并运行CGI完成的东西中。