2015-01-06 29 views
0

這是我昨晚想到的一個好奇心。 通常,當我在網站上更新我的PHP時,我會因錯誤地正確填寫一個字母或符號而出現錯誤。如果這是在編輯現場網站時完成的,則訪問者可能會看到錯誤。PHP - 當錯誤顯示404 AND顯示網站管理員在單獨頁面上的錯誤?

所以這裏有一個想法,我沒有在Google上找到過一次,我希望這是可能的。

比方說,我在一個3000線的網站上搞了一行代碼。

是否有可能通過PHP告訴網站,如果有錯誤將所有網站訪問者重定向到「錯誤404」頁面或「維護」頁面,但在另一端顯示錯誤的自定義頁面上,只有站長看到了嗎?

基本上是這樣的。

我的網站出現錯誤。

網站訪問者被重定向到:http://example.com/maintenance.php 併爲我看到實際的錯誤我訪問http://example.com/webmasterError.php

我知道可以通過電子郵件將您的錯誤發送給您,但這也是一個稍後可能實現的實驗,或者其他人可能會在實施時發現它們有用。

如果我沒有錯誤ErrorDocument 500/500.html可以重定向到維護頁面,但在特定頁面上顯示錯誤怎麼辦?

這就是我卡住的地方。

謝謝大家。我意識到這可能聽起來像一個初學者會想出的想法,但我相信它有時可能會有用。

編輯

有些用戶使用本地主機進行編輯,這樣的錯誤只在本地發生的提及。我不能不同意這一點,但爲了增加使用它的其他可能性,讓我們假設你正在使用PHP來包含來自其他站點的外部文件。就像如果您從Facebook圖表API和Facebook獲取用戶信息決定取走您嘗試訪問的頁面。您的網站可能會顯示錯誤,指出無法打開該流。這將發生在您的現場。

+0

是的,這當然是可以的。您必須將錯誤信息存儲在webmasterError.php然後讀取的地方。但是,如果發生的錯誤也會導致webmasterError.php失敗,會發生什麼情況? –

+0

這聽起來像是一個好主意,可以保護訪問者免受網站上的錯誤。但是你應該首先在本地測試服務器上編輯你的網站,當你完成編輯並且知道它沒有錯誤時,你應該把它上傳到公共服務器。 –

+0

這實際上是個好問題。我敢肯定,如果我要爲主站點和webmasterError.php使用兩個單獨的代碼,那麼如果一個代碼失敗,那麼另一個代碼不應該。我想它會下來試試看,看看它是如何發展的。 – user3658885

回答

0

您是否在談論PHP日誌,就像當您開始一些無限循環或錯誤捕獲try-catch結構?

因爲你能做到這一點的辦法型動物:

做2頁,一個簡單的404,爲遊客,還是一個特殊的一個,上面寫着一個MySQL表中存儲的所有非解決錯誤。

OR

連接到您的網站,但有一個特殊的「管理員帳戶」,並於同404用戶,添加錯誤日誌。

+0

不,我正在談論一個顯示錯誤的實際頁面。當我的代碼出現錯誤時,它會在頁面上顯示一個包含錯誤代碼的錯誤框,它在哪一行,哪個文件等等,我希望有一種方法可以在完全獨立的頁面上顯示這些錯誤代碼,而不是訪客顯示。 – user3658885

+0

哦,好的。因此,您需要禁用錯誤顯示(apache配置),然後在您的特殊PHP頁面中,執行一個可以讀取apache日誌文件並顯示它的小函數。 – Keenuts

+0

有趣的解決方案。我將不得不考慮這樣做。 – user3658885

0

所以我一直在努力。我現在有我的錯誤去一個日誌文件,我將在一個單獨的頁面上顯示。儘管我遇到了一個問題。在測試我的錯誤處理方式時,我只需刪除一個「;」從我的一個陣列強制一個錯誤。當這種情況發生時,我的整個網站都停止了這不是預期的。我確實期望網站停止運行,但我也希望它能顯示基於我的.htaccess文件的某種類型的消息。

ErrorDocument 400 "<p>Error 500</p><p>This Page Is Down For Maintenance.</p>" 
ErrorDocument 401 "<p>Error 401</p><p>Authorization Required.</p>" 
ErrorDocument 403 "<p>Error 403</p><p>Forbidden.</p>" 
ErrorDocument 404 "<p>Error 404</p><p>Not Found.</p>" 
ErrorDocument 500 "<p>Error 500</p><p>Internal Server Error.</p>" 

# supress php errors 
php_flag display_startup_errors off 
php_flag display_errors off 
php_flag html_errors off 

# enable PHP error logging 
php_flag log_errors on 
php_value error_log PHP_errors.log 

我在想,錯誤500警告會出現,當代碼失敗,而是我得到一個完全空白的頁面。

我的404錯誤工作得很好,但我知道我的.htaccess文件正在被服務器正確讀取。