2009-01-07 90 views
5

我們正在遷移到運行Windows 2003和IIS 6的新服務器。當我的PHP代碼運行時,它在特定行上有一個警告(我現在期待的但很快就會解決)。但是,當它遇到警告時,它會立即停止處理並在HTTP標頭中返回500錯誤。通常,我希望PHP輸出警告,但繼續處理腳本。PHP警告導致腳本在運行FastCGI的IIS上停止

IIS,FastCGI或PHP的配置中是否有某些內容會在PHP遇到警告時返回500個錯誤?

澄清:我不想壓制警告;我希望他們展示。我不希望腳本停止處理警告。

回答

10

找出問題所在。 log_errors在php.ini中設置爲On,但是error_log未設置。這導致PHP停止了一切。將display_errors設置爲on後,現在會顯示警告,以便我可以看到輸出中的事件正在中斷。

這個線程是有幫助的:http://forums.iis.net/p/1146102/1856222.aspx#1856222

+0

那麼,你怎麼設置`error_log`來?請在你的答案中加入以幫助他人。 – 2014-07-22 01:41:48

0

我不知道IIS或FastCGI,但afaik PHP沒有這樣的選項。但是,您可以設置error_reporting(在你的php.ini)到

E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR 

作出警告消失。

0

這也很大程度上取決於您的PHP代碼,如果您在代碼中執行一些複雜的操作併發生錯誤,Web服務器有時會拋出500個錯誤。我建議你:

  1. 把一個@上線壓制的錯誤,即:

    $ X = @創建my_function($ Y);

  2. 查看您的網絡服務器日誌以獲取確切的錯誤消息,然後將其發佈到此處,也許我們可以爲您提供更好的解決方案。