2014-01-23 68 views
1

我有一個正常工作正常的CGI腳本。Apache CGI - 非零退出代碼

但是,在某些情況下,它可能會失敗,這會導致非零退出代碼。 有時候,它會在失敗之前輸出標題等。

例如,輸出只可能是:

Content-Type: text/html; charset=utf-8 

<empty body> 
與123

目前的程序退出代碼

然後,Apache會以此爲HTTP 200,並愉快地返回一個空白頁給用戶。

有沒有辦法讓Apache將這樣的程序失敗視爲錯誤?

我真的以爲它會在這種情況下返回HTTP 500,但顯然我錯了(或者是錯誤的配置)。

回答

1

沒有辦法讓mod_cgi/mod_cgid緩衝狀態行/ headers/body來確保CGI最終成功退出。即使是空的主體,只要標題被終止,狀態行就會被寫入,這就太遲了。

除了Apache之外,你的CGI必須緩存自己的stdout,否則你將不得不將它包裝在緩存所有stdout並運行CGI完成的東西中。

+1

似乎這是正確的。我發現這個鏈接也很有用:http://perl.apache.org/docs/2.0/api/ModPerl/Util.html#C_exit_從那個鏈接中:「退出狀態,在撰寫本文時被忽略。」 – jwd

相關問題