遇到這樣的問題,自己機子上裝的(MAX OS,PHP5.4.24),設定檔裡是開啟了錯誤報表 的( display_errors = On;和error_reporting = E_ALL & ~E_NOTICES),但我現在程式裡想關閉錯誤報表,
ini_set('display_errors', 0);
error_reporting(0);
為什麼不生效呢?就算上面這兩函數用上了,出了致命錯誤後,一直是報的。難道沒辦法屏蔽嗎?一定要修改設定檔 為OFF?
於是我看了一下手冊。還真有一句話:
Note:
儘管 display_errors 也可以在運行時設定 (使用 ini_set()), 但是指令碼出現致命錯誤時任何運行時的設定都是無效的。 因為在這種情況下預期啟動並執行操作不會被執行。
上面這話怎麼解理?意思是只是你程式出致命錯誤了,任何ini_set都是無效的? 那麼錯誤報表是否顯示,全完看ini配置。所以想臨時修改報告 是不可能的?只能通過修改配置然後重啟服務。。。。
求大神講解。。
回複討論(解決方案)
如果你的錯誤出現在 ini_set('display_errors', 0); 之前
那麼錯誤資訊是一定要輸出的
而致命錯誤多為語法錯誤,必然會出現在運行之前
你可以將錯誤資訊定向到記錄檔
也可以對開發環境和運行環境使用不同的 php.ini
ini_set('display_errors','off');
error_reporting(0);
放在?面最前??。
如果你的錯誤出現在 ini_set('display_errors', 0); 之前
那麼錯誤資訊是一定要輸出的
而致命錯誤多為語法錯誤,必然會出現在運行之前
你可以將錯誤資訊定向到記錄檔
也可以對開發環境和運行環境使用不同的 php.ini
可是版主,我現在公司的一台伺服器錯誤報告是設定檔 裡是開啟的,但是出了致命錯誤時沒有報,程式的一開始用了ini_set('display_errors', 0); 要我手動調 為 1才會報錯,這又為什嗎?
display_errors 是顯示錯誤的意思
你把它關閉了,錯誤怎麼能顯示呢?
把錯誤資訊重新導向的檔案,並不表示可以關閉 display_errors,只是改變了輸出裝置
有一些錯誤是要到運行時才會出現的,比如函數缺少參數,除數為0.....
display_errors 是顯示錯誤的意思
你把它關閉了,錯誤怎麼能顯示呢?
把錯誤資訊重新導向的檔案,並不表示可以關閉 display_errors,只是改變了輸出裝置
有一些錯誤是要到運行時才會出現的,比如函數缺少參數,除數為0.....
對呀,現應就是display_errors設定為0時不報錯呀,但是我原貼裡不是說了嗎,還是會報
是你被你自己弄糊塗了吧?
display_errors = On
這裡所發生的錯誤都會報
ini_set('display_errors', 0);
這裡所發生錯誤都不會報
是你被你自己弄糊塗了吧?
display_errors = On
這裡所發生的錯誤都會報
ini_set('display_errors', 0);
這裡所發生錯誤都不會報
應該是我表達不夠直接了,
是這樣的,現在PHP設定檔裡不管是on 還是OFF ,
我希望程式裡能通過那個ini_set函數或error_reporting函數快捷更改報錯或屏蔽報錯。都是無效。 但我在公司伺服器上發現是有效。是這樣
不要做這無謂的事情
1、如果關閉錯誤顯示,那麼在文法分析階段所出現的錯誤將直接導致 HTTP 500 錯
所以至少需要開啟錯誤顯示並重新導向到錯誤記錄檔
2、所有運行期間產生的錯誤都可以通過 set_error_handler 函數重新導向到自訂的錯誤處理程式
在自訂的錯誤處理程式中,你就可以按你的意願實現期望的動作了