2010-10-25 39 views
9

在已經升級到PHP 5.3,我的應用程序與淹沒PHP 5.3:「...的宣言應該是兼容,在... ...」錯誤

「的...宣言應該是兼容...「

樣式錯誤。我瞭解這些錯誤的性質,但我希望禁用它們。

error_reporting setting in php.ini"E_ALL & ~(E_NOTICE | E_DEPRECATED)",但此錯誤繼續顯示。我認爲它包含在E_STRICT中,但我錯了嗎?

+0

不是說它是什麼類型的錯誤? – 2010-10-25 17:29:00

+8

這些確實是'E_STRICT'錯誤,但是IMO應該修復他們的原因而不是他們的報告。保持您的代碼清潔。 – Gordon 2010-10-25 17:58:17

+5

這不是乾淨的代碼問題。該錯誤是子類的方法具有比父類中的相同方法多的參數的結果。特別是,它是控制器類的_defaultAction()函數。擴展的默認操作可能很好地接受父類不支持的參數。我可以很容易地使用func_get_args()來解決這個問題,但是然後方法聲明完全沒有相關的含義。 – Ethan 2010-10-25 18:09:11

回答

12

這是一個E_STRICT錯誤。更改您的php.ini設置爲E_ALL & ~(E_NOTICE | E_DEPRECATED | E_STRICT) ...

但它應該被默認關閉(它不包括在E_ALL中)。所以如果你得到了它們,這意味着它正在被打開。問題是,在哪裏?在文件的任何位置是否聲明error_reporting(...)?如果是這樣,請檢查它們。如果沒有,那麼確保你正在編輯正確的php.ini文件(檢查phpinfo())...你總是可以做一個grepE_STRICT試圖找到它被打開的地方...

+1

它也可以通過使用'error_reporting(-1)'來啓用,這是在開發機器上啓用所有錯誤的推薦方式。 – Gordon 2010-10-25 17:55:00

+0

我改變了php.ini中的設置,但仍然出現錯誤。它不會在其他地方設置(通過grep檢查),並且在運行時更改error_reporting值不起作用。此外,錯誤中引用的行始終是聲明子類的行,如果這可以解決問題。 – Ethan 2010-10-25 18:40:35

+4

爲了完整性,'E_STRICT' *包含在5.4中的'E_ALL'中。 – ladenedge 2012-08-31 16:25:00

0

讓我告訴你一個很好的設置。

您可以更改php.ini,在此文件中,您可以搜索一個句子爲ignore_repeated_errors = Off,您應該將狀態更改爲開啓狀態。

如果您還遇到相同類型的錯誤,應該設置錯誤級別常量