2015-05-13 51 views
0

將我的MAMP PRO(在OS X Yosemite 10.10.3)更新到最新版本3.2.1後,它停止顯示錯誤。在MAMP PRO中,您可以在PHP選項卡的GUI中設置錯誤顯示選項。所有東西都有一個複選框(這是德文版,但它說「所有錯誤」[選中],「顯示」[選中])。MAMP PRO 3.2.1不顯示PHP錯誤

當我的phpinfo()檢查,display_errorsOnerror_reporting32767(其應相當於E_ALL)。

但是,如果我做了類似array_merge(false, array())的任何操作,我都不會收到任何錯誤。如果我錯過了分號(語法錯誤),我會得到一個空白頁。

我試着完全移除MAMP PRO並重新安裝多次,即使重新啓動後也無濟於事。所有「解決方案」在那裏說,你應該把display_errrors = Onerror_reporting = E_ALL這就是我所擁有的,它也是使用正確的php.ini,我用phpinfo()驗證。

當我把

error_reporting(E_ALL); 
ini_set('display_errors', 'On'); 

在我的PHP代碼只是錯誤,例如上面對於array_merge(false, array()),我終於得到一條錯誤消息「消息:array_merge():參數#1不是數組」,這是我所期望的,但我希望得到該消息而不必在我的PHP代碼中使用ini_set。此外,即使使用此方法,語法錯誤仍未顯示。

我花了數小時,並真的很感謝任何幫助解決這個問題。

回答

1

好吧,我終於明白了。我工作的應用程序正在使用笨並在index.php的ENVIRONMENT常數錯誤地設置爲「生產」這反過來組使用error_reporting爲0這樣的:

case 'production': 
    error_reporting(0); 
break; 

一旦我設置ENVIRONMENT常數爲'發展「,它按預期工作。

那麼爲什麼升級到最新的MAMP PRO 3.2.1後會發生這種情況?因爲如果$_SERVER['SERVER_ADDR'] == '127.0.0.1',如果真設置ENVIRONMENT不變的代碼檢查,設置環境發展:

if ($_SERVER['SERVER_ADDR'] == '127.0.0.1') { 
    define('ENVIRONMENT', 'development'); 
} 

在最新MAMP PRO,該$_SERVER['SERVER_ADDR']不是127.0.0.1了,但::1。爲V3.2的更新日誌說:

每臺主機獲取IPv6條目:: 1在/ etc/hosts中

相當棘手的東西。我現在使用$_SERVER['HTTP_HOST']而不是$_SERVER['SERVER_ADDR']來設置ENVIRONMENT不變。