2014-02-18 73 views
0

我在VPS上運行我的網站。我可以爲LAMP創建1個實例。我想爲開發服務器和生產服務器上的錯誤報告設置不同的設置。錯誤報告的php ini設置

有什麼辦法可以在同一個php.ini文件中爲開發和生產定義兩個不同的設置嗎?

我想設置

error_reporting(-1); 

發展服務器,

error_reporting(0); 

生產服務器。

+1

當讀取ini文件時,php如何知道它是開發或生產服務器? – poncha

+0

這就是我想要弄明白的。我知道有一種方法可以做到。但是,我不知道如何? –

+0

您可以在** apache **網站上應用該配置而不是在php.ini中......這樣,您可以在apache中擁有兩組配置(2個網站),並且您基本上可以關閉另一個 - 我們可以創建 – poncha

回答

0

在同一個php.ini文件中不能有兩套配置。 但是,您可以在Apache中有多個網站

在每個站點中,您都可以配置環境相關設置。

例如,在prod.conf

php_value error_reporting 0 

而且,在dev.conf

php_value error_reporing -1 

您也可以扔在其他的東西一樣一樣,display_errorserror_log定義。 然後,您開啓生產服務器上的prod.conf站點,開發一個dev.conf

0

你不能直接在php.ini中執行此操作。還有,你可以完成你想要的一些方法:

  • 你可以直接使用設置在Apache虛擬主機的conf針對該虛擬主機明確設置所需的值。

  • 您可以在.htaccess文件中使用指令,一個用於您的實時應用程序,另一個用於您的開發應用程序。

  • 您可以使用環境變量觸發您的應用程序設置正確的設置。在Apache配置或.htaccess中,將「APP_MODE」等環境變量設置爲「開發」或「生產」。然後您的應用程序代碼可以查找該var並相應地設置報告。例如,if (getenv('APP_MODE') == 'development') { error_reporting(E_ALL); }

  • 你可以使用一個框架來爲你做這件事。例如,Zend Framework使用環境變量和ini文件的組合。

+0

當我試圖編輯.htaccess文件時,它給我內部服務器錯誤。我在httpd.conf文件中爲我的項目目錄定義了AllowOverride All。我錯過了什麼? –

+0

也許是語法錯誤或拼寫錯誤?你到底在做什麼?也許是一個權限錯誤?確保該文件可以被運行Apache的用戶讀取。 –

+0

'<目錄「/家/網站/的public_html」> 選項所有多視圖 的AllowOverride所有 訂購允許,拒絕 從' –