PHP錯誤報表設定不生效?

來源:互聯網
上載者:User
遇到這樣的問題,自己機子上裝的(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 函數重新導向到自訂的錯誤處理程式
在自訂的錯誤處理程式中,你就可以按你的意願實現期望的動作了

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.