2011-08-10 24 views
3

我有一個開發環境和運行在同一主機上的實時環境,使用nginx和fastcgi。在php.ini中,display_errors設置爲關閉,以便錯誤不會顯示在生產站點上。只在一個站點上顯示PHP錯誤

現在,在開發環境中,我需要能夠看到這些錯誤。所以我會做ini_set('display_errors', 'On');,但是,如果它是一個分析錯誤,那將不會被執行,錯誤將不會顯示。

所以我的問題是,有什麼辦法可以在我的php.ini文件中安全地設置display_errors到on,然後可能在nginx中使用虛擬主機文件來確保錯誤不會顯示在生產中現場?

+0

這可能是有用的:http://stackoverflow.com/questions/1049326/php-error-reporting-on-specific-folders – EdoDodo

+2

不幸的是,因爲我沒有使用Apache。 –

+0

看看這裏:http://stackoverflow.com/questions/107828/how-can-i-turn-on-php-errors-display-on-just-a-subfolder 你可以用.htaccess解決這個問題 – Marian

回答

3

如果您使用的是fastcgi,您可以將其配置爲使用不同的php.ini文件運行php。我不熟悉nginx和fastcgi config,所以不能提供任何提示。瞭解如何運行PHP可以參見php manual

我想你可能要像php -d display_errors=On運行它的開發環境

+0

這是一個很好的建議。研究如何爲單個虛擬主機進行設置。如果任何人有關於如何做到這一點的任何想法,請編鐘。 –

+0

我的一位同事弄明白了。他必須建立一個單獨的php-cgi守護進程。 –

+1

使用php-fpm並使用不同的套接字/端口設置不同的「池」,然後您可以加載每個池的特定設置。 – SleighBoy

0

我相信你可以在你的腳本中使用error_report直接設置錯誤報告級別。我手邊沒有任何代碼來檢查是否確定,但我知道您可以在不觸及php.ini的情況下更改它。

+0

error_report僅指示將報告的內容。 display_errors決定是否顯示錯誤。任何這些解決方案的問題是,當使用CGI運行腳本時,如果存在解析錯誤,則腳本永遠不會運行。由於該腳本未運行,因此display_error從不設置 - 並且錯誤將不會顯示。 –