鍍金池/ 問答/PHP  網(wǎng)絡(luò)安全/ 如何攔截到 php 的 notice, warning 錯誤?

如何攔截到 php 的 notice, warning 錯誤?

Notice: Undefined property: stdClass::$xxx in /Applications/xxx/xxx/xxx/xxx.php on line 35

Warning: Invalid argument supplied for foreach() in /Applications/xxx/xxx/xxx/xxx.php on line 35

上面類似這種的錯誤
要如何能夠攔截呢?
如果可以的話我想改成自己的解釋
用戶看到也不會怪

回答
編輯回答
笑忘初

set_error_handler,set_exception_handler,register_shutdown_function這三個方法,可以找各種框架看看他們的錯誤異常接管,也可以用whoops這種現(xiàn)成的類庫。

2017年11月14日 09:09
編輯回答
北城荒

用戶看到?
一般在生產(chǎn)系統(tǒng)里,都是把php.ini里的display_errors設(shè)置成off,這樣用戶頁面只要能渲染,在前端層面是不會出現(xiàn)錯誤信息的。而在開發(fā)時,可以通過在文件開始位置寫上:

error_reporting(E_ALL); 
ini_set("display_errors", 1);

來臨時開啟報錯功能,不過我個人覺得用的不多,一般都是頁面完全渲染不出來(算是重大錯誤吧)才會打開,平時都是通過error_log在關(guān)鍵點上主動打log的,這樣開個bash或者ssh窗口用tail -f error.log直接就能看到運行情況,當(dāng)然用框架有單獨錯誤處理的不說了,反正都大同小異。

另外你看下php.ini文件吧,注釋里邊寫的很清楚有開發(fā)和生產(chǎn)兩套配置,一般按生產(chǎn)系統(tǒng)那套就行。

2018年9月15日 14:28