2011-09-08 14 views
9

我有一個傳統應用程序,需要register_globalsmagic_quotes_gpc才能啓用。我的error_reporting設置爲E_ALL & ~E_DEPRECATED,因爲我仍然希望看到任何警告。PHP 5.3棄用郵件顯示爲警告

當我運行PHP CLI我碰到下面的

$ php -d "error_reporting=E_ALL & ~E_DEPRECATED" -v 
PHP Warning: Directive 'register_globals' is deprecated in PHP 5.3 and greater in Unknown on line 0 
PHP Warning: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0 
PHP 5.3.3 (cli) (built: Mar 30 2011 13:51:41) 
Copyright (c) 1997-2010 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies 
    with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans 

爲什麼顯示過時的消息作爲警告?他們不應該在E_DEPRECATED的水平?

看來我得爲不顯示警告,讓他們走開

$ php -d "error_reporting=E_ALL & ~E_WARNING" -v 
PHP 5.3.3 (cli) (built: Mar 30 2011 13:51:41) 
Copyright (c) 1997-2010 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies 
    with Xdebug v2.1.2, Copyright (c) 2002-2011, by Derick Rethans 

我可以改變我的error_reportingE_ALL & ~E_DEPRECATED & ~E_WARNING,但那就不會顯示我的web應用程序的警告。有什麼建議麼?我必須爲CLI使用單獨的php.ini嗎?

+0

它被編程爲E_WARNING。就是這樣。 (順便說一句,這兩個警告很容易解決。) – mario

+1

你應該關閉這兩個指令。他們是糟糕的壞主意。 –

+0

@OndřejMirtes剛剛引用了OP,因爲它似乎錯過了第一行:「我有一個需要register_globals和magic_quotes_gpc啓用的舊應用程序。」 –

回答

0

最好的做法是不要使用。它們是E_WARNING,因爲這些是開發人員選擇觸發的錯誤類型(在該級別使用一對一是隨意的)。

我強烈建議您確保這些功能在您的配置中已關閉,或者如果無法避免,請在配置中關閉這些類型的警告。否則,你冒着破壞AJAX請求的風險。我們都必須應付它。

0

您可能會關閉display of startup errors關閉一些運氣。這些錯誤仍應記錄到錯誤日誌中,但它們不會顯示在應用程序的輸出中。

+0

我有'display_startup_errors = Off',仍然收到警告。 – ejunker

0

,你可以嘗試用

set_error_handler("myFunc"); 

註冊您的錯誤處理程序和myFunc的是一樣的東西:

myFunc($errno,$errstr) { 
    return strpos($errstr,"register_globals")===false ? false : true; 
} 

所以,如果沒有找到字符串 「register_globals的」 FUNC返回false和標準錯誤處理開始,否則它只是返回true而沒有任何反應。

1

LMGTFY

最好的答覆

[2009-09-07 08:42 UTC] [email protected] 是。這不是E_DEPRECATED,它是E_WARNING,這不會改變。

[2010-03-23 14:26 UTC] [email protected] AKS在esoft點DK>如果文件確實說,然後報告它作爲一個獨立的問題,而不是一個碰撞已經關閉的報告。

看起來像你必須接受它的行爲方式。
此更改將僅適用於v6

2

error_reporting更改爲E_ALL & ~E_DEPRECATED & ~E_WARNING

然後,在你的代碼集的開頭:

error_reporting(E_ALL | E_STRICT); 

初步檢查PHP已經過去了,現在你有你完整的錯誤報告的環境。 :)