2012-09-10 118 views
2

當我去看php手冊中的錯誤處理時,有人發佈了關於可能衝突的有趣評論。以下是鏈接:http://www.php.net/manual/en/errorfunc.configuration.phpPHP的session_start()與error_reporting()衝突?

基本上,它聲明在error_reporting()之前調用session_start()會導致error_reporting()的行爲不正確。相反,訂單將不得不翻轉。我很好奇任何以前遇到過這個問題的人。

更重要的是,如果出現問題,那會對班級產生怎樣的影響?例如,如果我要實現一個類(例如用戶登錄)並使用它自己的特定錯誤處理系統(涉及error_reporting()),是否會發生衝突?更具體地說,如果我有一個session_start()文件,那麼我就像上面所說的那樣調用這個類。

謝謝先進。

+0

我不知道這個問題,我也不信任任何關於PHP.net的意見(可惜)。你能描述不正確的行爲並提供測試場景嗎?確保在'session_start'之前調用'error_reporting'而不發生糾纏會是不合理的。 – Halcyon

+0

我也不信任他們。這就是我很好奇的事情,因爲我個人沒有看到問題。特別是當你考慮設計一個類並擁有自己的錯誤處理系統時。我會覺得很難接受真的有問題。 – Mlagma

+0

您是否爲每個班級設置了不同的錯誤報告級別?如果是這樣,爲什麼? – Mahn

回答

3

首先,這兩個功能顯然是完全無關的。

其次,我在session_start之前和之後都調用了error_reporting,並且從未目睹過任何問題。沒有人使用我的框架也報告任何問題。最好在應用程序的開始附近設置一次error_reporting,但有時我會在調試其他人的代碼的特定部分時將其設置在更深層次。

但是,如果您在開始會話之前輸出錯誤(顯示錯誤),則可以在未輸出緩衝的情況下獲取標題警告。

+0

沒錯,那些頭部警告可能是php.net的評論者經歷的某種方式。 – Mahn

1

儘管沒有直接回答你的問題,但使用ob_start()作爲第一個調用很可能解決你的問題,因爲當輸出緩衝開啓時,標題和內容順序不再起作用。

+0

+1輸出緩衝 – Dave