簡體   English   中英

MAMP PRO 3.2.1不顯示PHP錯誤

[英]MAMP PRO 3.2.1 not displaying PHP errors

將我的MAMP PRO(在OS X Yosemite 10.10.3上)更新到最新版本3.2.1后,它停止顯示錯誤。 在MAMP PRO中,您可以在PHP選項卡的GUI中設置錯誤顯示選項。 一切都在那里有一個復選框(使用德語,但顯示諸如“所有錯誤” [已選中],“顯示” [已選中]之類的內容)。

當我用phpinfo()檢查時, display_errorsOnerror_reporting32767 (應該等效於E_ALL )。

但是,如果我做類似array_merge(false, array())事情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()) ,我終於收到一條錯誤消息“ Message:array_merge():Argument#1 is a array”,這是我期望的,但我想要無需在我的PHP代碼中使用ini_set即可獲取該消息。 此外,即使使用此方法,語法錯誤仍然沒有顯示。

我花了幾個小時在此上,並且非常感謝您為解決此問題提供幫助。

好吧,我終於明白了。 我正在處理的應用程序正在使用Codeigniter,並且在index.php中,將ENVIRONMENT常量錯誤地設置為“ production”,從而將error_reporting設置為0,如下所示:

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

一旦將ENVIRONMENT常量設置為“開發”,它就會按預期工作。

那么,為什么在升級到最新的MAMP PRO 3.2.1之后會發生這種情況? 設置ENVIRONMENT常量的代碼檢查$_SERVER['SERVER_ADDR'] == '127.0.0.1' ,如果為true,則將ENVIRONMENT設置為development:

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

在最新的MAMP PRO中, $_SERVER['SERVER_ADDR']不再是127.0.0.1而是::1 v3.2的變更日志說:

每個主機都在/ etc / hosts中獲得IPv6條目:: 1

相當棘手的東西。 我現在使用$_SERVER['HTTP_HOST']代替$_SERVER['SERVER_ADDR']來設置ENVIRONMENT常量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM