2013-02-14 62 views
3

我嘗試了一切可以想到的方法來阻止在CakePHP中顯示錯誤。我檢查了CakePHP指導手冊,並且搜索了「在CakePHP中關閉錯誤報告」和「在CakePHP中關閉調試模式」等短語的互聯網和計算器。下面是仍然顯示和我曾嘗試在CakePHP中隱藏這些錯誤的錯誤的說明:嘗試了一切,並且無法關閉CakePHP中的錯誤

錯誤,我仍然得到

  • 誤區一:我特意聲明的變量不正確在我的 控制器類中的一個,以測試錯誤是否被顯示,並接收 「解析錯誤:語法錯誤,意想不到T_VARIABLE,在 期待T_FUNCTION(文件路徑和行號)」

  • 錯誤二:我嘗試在URL中輸入一堆亂碼作爲 測試以查看它是否會顯示錯誤。我從Cake中得到「Missing Controller」錯誤。

事情我已經試圖從顯示

  • 配置::寫Stop錯誤( '調試',0); (編輯爲零)在\ app \ Core.php中

  • error_reporting(0); (添加該行)\ app \ Config \ bootstrap.php

  • 配置:: write在\ app \ Core.php中有一個'level'鍵,所以我將它從「E_ALL & E_DEPRECATED」更改爲然後我試着將它清空。

  • 爲public_html添加了一個php.ini文件,其中包含一大堆關閉錯誤的命令。我也刪除了這個文件,以確保它不會一直存在干擾。

  • 註釋掉了\ lib \ Cake \ Utility \ Debugger.php中的___構造()部分(這樣可以消除頁面的標題標記中出現的錯誤消息,當將亂碼輸入到url中但不是丟失控制器錯誤)。順便說一下,錯誤消息正在被放入HTML標題中。這很奇怪。

  • 註釋掉echo $ self- outputError($ data); in \ lib \ Cake \ Utility \ Debugger.php中的showError

  • 雙重檢查了手冊的「部署」頁面,該頁面將我引向「調試」頁面。該頁面討論了設置「Configure :: debug」,它與「Configure :: write('debug',0)的寫法略有不同」所以我嘗試了變化。

  • 我搜索包含PHP的短語所有目錄「使用error_reporting(」和「的ini_set(」確保我沒有在啓用錯誤某處有和遺忘。

如果任何人有任何想法,爲什麼這些仍然顯示,儘管所有我已經嘗試過或可以做什麼來關閉它們,我將非常感謝。

謝謝。

+1

好像你在這裏真的很絕望。但是你應該知道'Configure :: write('debug',0);'真的是應該就夠了。如果不是,那麼你很可能會在其他地方再次提高水平。 – mark 2013-02-14 08:23:15

+0

想知道某些服務器設置是否覆蓋調試0? – RichardAtHome 2013-02-14 09:11:20

回答

2

我試着馬克的建議,這工作。當我搜索我的整個Cake安裝「Configure :: write('debug'」,我發現了很多行來打開調試 - 雖然其中大部分都是從官方CakePHP站點下載的原始文件中存在的。 ,我做了一個Cake安裝的副本,更改了所有設置調試高於0的實例,然後,假設其中一些應該在處,並且不確定哪些應該在那裏,我決定要完全刪除CakePHP,下載一個新的副本,並將其替換。

配置完新內核之後。PHP中,缺少的控制器錯誤被替換爲未找到的錯誤,並且我爲測試目的而故意導致的解析錯誤被內部服務器錯誤所取代。我不確定顯示內部服務器錯誤是否應該這樣做......但是編輯調試設置後,行爲確實發生了變化,並且不再顯示文件路徑。所以,我猜想它的行爲方式應該是這樣的。

我想給馬克信貸幫我解決這個問題,但他只發表了一條評論。

1

我覺得這是對ü一些選項:

  1. 配置你的錯誤

    在這裏你去應用/配置/ core.php中

    Configure::write('Error', array( 'handler' => 'ErrorHandler::handleError', 'level' => E_ALL & ~E_DEPRECATED, 'trace' => true )); 你有5個內置在配置錯誤處理程序時的選項中:

處理程序 - 回調 - 處理錯誤的回調。您可以將其設置爲任何可調用類型,包括匿名函數。

級別 - int - 您有興趣捕獲的錯誤級別。使用內置的php錯誤常量和位掩碼選擇您感興趣的錯誤級別。

trace - 布爾值 - 在日誌文件中包含堆棧跟蹤錯誤。堆棧跟蹤將在每個錯誤後包含在日誌中。這有助於查找錯誤發生的位置/時間。

consoleHandler - 回調 - 用於在控制檯中運行時處理錯誤的回調。如果未定義,將使用CakePHP的默認處理程序。

  1. 創建錯誤處理程序作爲自己

    //在app /配置/ core.php中

    Configure::write('Error.handler', 'AppError::handleError');

//在app /配置/ bootstrap.php中

`App::uses('AppError', 'Lib');` 

// in app /Lib/AppError.php

class AppError { public static function handleError($code, $description, $file = null, $line = null, $context = null) { echo 'There has been an error!'; } }

這個類/方法將打印出「出現了一個錯誤!」每次出現錯誤的時間。既然你可以定義一個錯誤處理程序,任何回調的類型,你可以,如果你正在使用PHP5.3或使用匿名函數:更大

Configure::write('Error.handler', function($code, $description, $file = null, $line = null, $context = null) { 
    echo 'Oh no something bad happened'; 
}); 

也可以看出U here更多的幫助

相關問題