2009-12-03 61 views
0

我已經與這些代碼嘗試:錯誤不顯示在PHP腳本

error_reporting(E_ALL^E_NOTICE); 

ini_set("display_startup_errors","on"); 
ini_set("track_errors","on"); 
ini_set("error_reporting","E_ALL^E_NOTICE"); 

但還是錯誤不會出現在我的script.It僅僅只顯示空白屏幕時,任何錯誤occur.Please指導我。

+1

你能發佈代碼嗎?有時你的語句可能在它們前面有'@',它告訴PHP抑制錯誤? – 2009-12-03 15:24:12

+0

檢查空白頁的來源(查看源)。它顯示了什麼? – Shoban 2009-12-03 15:25:12

+0

它是真實的代碼,我沒有在任何地方使用@標誌 – user223954 2009-12-04 05:36:24

回答

1

這可能是因爲您的提供者已經設置了PHP錯誤而不是輸出,但在內部進行了記錄。我以前經歷過這個。在這種情況下,custom error handler可能會對您有所幫助。但是,在此之前,請確保您在任何語句前沒有@並且log_errors處於打開狀態。同時運行phpinfo()來仔細檢查是否所有報告設置都已激活。

此外,完全空白的頁面可能是結構分析錯誤。用一個簡單的引起錯誤的語句來檢查,如

ecxho("hello world"); 

第一。

+0

我沒有使用@標誌。你可以告訴自定義錯誤處理程序如何在這裏使用。 – user223954 2009-12-04 05:37:50

+0

以鏈接到的文檔中的myErrorHandler()示例。這應該很好。 – 2009-12-04 12:51:33

0

這是你的專用服務器嗎?或共享主機等?很可能在服務器級別關閉錯誤報告。 (原因通常是'安全',但我不明白它是一個真正的安全問題。)

如果您有權訪問它或編輯您的主機,請編輯您的服務器配置(php.ini)。他們可能能夠提供對錯誤日誌的訪問。

+0

我認爲基本原理是,面向公衆的錯誤可以揭示服務器的文件系統和該網站使用的框架(如果有的話)的詳細信息。這可以讓某人在網站或服務器上查找漏洞和漏洞。通過共享主機,單個易受攻擊的站點可能會危及服務器上的每個站點。 – 2009-12-03 15:39:36

+0

確實 - 我想我是從「純粹」POV角度來看它的,因爲如果存在安全漏洞,無論您是否顯示文件系統的詳細信息,它仍然存在。攻擊者無論如何都可以輕鬆地嘗試所有流行框架/軟件的攻擊。 – DisgruntledGoat 2009-12-03 17:23:26

1

怎麼樣:

ini_set('display_errors', 1); 

+0

+1 error_reporting是一回事,向標準輸出顯示錯誤是另一回事。 – 2009-12-03 17:27:30