我已經與這些代碼嘗試:錯誤不顯示在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指導我。
我已經與這些代碼嘗試:錯誤不顯示在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指導我。
這可能是因爲您的提供者已經設置了PHP錯誤而不是輸出,但在內部進行了記錄。我以前經歷過這個。在這種情況下,custom error handler可能會對您有所幫助。但是,在此之前,請確保您在任何語句前沒有@並且log_errors處於打開狀態。同時運行phpinfo()
來仔細檢查是否所有報告設置都已激活。
此外,完全空白的頁面可能是結構分析錯誤。用一個簡單的引起錯誤的語句來檢查,如
ecxho("hello world");
第一。
我沒有使用@標誌。你可以告訴自定義錯誤處理程序如何在這裏使用。 – user223954 2009-12-04 05:37:50
以鏈接到的文檔中的myErrorHandler()示例。這應該很好。 – 2009-12-04 12:51:33
這是你的專用服務器嗎?或共享主機等?很可能在服務器級別關閉錯誤報告。 (原因通常是'安全',但我不明白它是一個真正的安全問題。)
如果您有權訪問它或編輯您的主機,請編輯您的服務器配置(php.ini
)。他們可能能夠提供對錯誤日誌的訪問。
我認爲基本原理是,面向公衆的錯誤可以揭示服務器的文件系統和該網站使用的框架(如果有的話)的詳細信息。這可以讓某人在網站或服務器上查找漏洞和漏洞。通過共享主機,單個易受攻擊的站點可能會危及服務器上的每個站點。 – 2009-12-03 15:39:36
確實 - 我想我是從「純粹」POV角度來看它的,因爲如果存在安全漏洞,無論您是否顯示文件系統的詳細信息,它仍然存在。攻擊者無論如何都可以輕鬆地嘗試所有流行框架/軟件的攻擊。 – DisgruntledGoat 2009-12-03 17:23:26
怎麼樣:
ini_set('display_errors', 1);
?
+1 error_reporting是一回事,向標準輸出顯示錯誤是另一回事。 – 2009-12-03 17:27:30
你能發佈代碼嗎?有時你的語句可能在它們前面有'@',它告訴PHP抑制錯誤? – 2009-12-03 15:24:12
檢查空白頁的來源(查看源)。它顯示了什麼? – Shoban 2009-12-03 15:25:12
它是真實的代碼,我沒有在任何地方使用@標誌 – user223954 2009-12-04 05:36:24