有沒有說方式普遍告訴PHP重定向到任何致命錯誤的某個頁面?捕捉所有的錯誤,並重定向到頁面用PHP
說我有一個網站有很多不同的文件,我想隱藏問題(同時仍然記錄它們)並將用戶發送到相同的錯誤頁面,無論錯誤是什麼或他們在哪個頁面上。
讓我們只是爲了論證而假裝我不想看到錯誤,並且頁面正在被機器人不斷編輯和更新,這些機器人每23或51頁編輯就會導致錯誤。
我正在尋找一些可能涉及php.ini文件或htaccess的東西,我可以在網站上做些什麼。
有沒有說方式普遍告訴PHP重定向到任何致命錯誤的某個頁面?捕捉所有的錯誤,並重定向到頁面用PHP
說我有一個網站有很多不同的文件,我想隱藏問題(同時仍然記錄它們)並將用戶發送到相同的錯誤頁面,無論錯誤是什麼或他們在哪個頁面上。
讓我們只是爲了論證而假裝我不想看到錯誤,並且頁面正在被機器人不斷編輯和更新,這些機器人每23或51頁編輯就會導致錯誤。
我正在尋找一些可能涉及php.ini文件或htaccess的東西,我可以在網站上做些什麼。
您可以更改的Apache默認的500錯誤頁面與'ErrorDocument'指令:
ErrorDocument 500 /500.html
這會將500內部服務器錯誤重定向到500.html。你也可以在那裏使用一個PHP頁面並郵寄引用頁面。
要捕獲錯誤,您可以將這些錯誤記錄到error.log文件中。在你的php.ini文件中使用以下兩個指令:
error_log = /var/log/httpd/error_php
log_errors = On
不要忘記重新啓動Apache。
這不適用於PHP錯誤。 – Cybot 2013-07-17 07:27:29
set_error_handler
- 設置 用戶定義的錯誤處理函數
基本的例子:
<?php
function errorHandler($n, $m, $f, $l) {
header('Location: http://example.com/error.php');
}
set_error_handler('errorHandler');
...
?>
首先,改變你的php.ini取消錯誤消息,並啓用日誌記錄:
display_errors=Off
log_errors=On
error_log=whatever/path
寫一個錯誤處理程序(不同於set_error_handler
,這其中也抓住嚴重錯誤)
register_shutdown_function('errorHandler');
function errorHandler() {
$err = error_get_last();
if($err)
include "error_page.php"; // your custom error page
}
將這個在一個文件中的代碼,並告訴PHP將其包括在每個請求(見auto_prepend_file
@http://php.net/manual/en/ini.core.php)
Ref:http://stackoverflow.com/questions/2171055/register-shutdown-function-registered-function-cannot-include-files-if-terminat 如果您遇到語法分析錯誤,此代碼將不起作用。這些包含會使你的腳本默默地失敗,並沒有留下太多痕跡。 如果有人對此有任何意見,我是全部耳朵。 – 2010-01-31 16:48:16
這實際上有點接近爲我工作的答案。 http://stackoverflow.com/a/19263800/1993494 – relipse 2013-10-09 05:31:06
當我終於得到它的工作,我張貼我的解決方案在這裏:http ://stackoverflow.com/a/19263800/1993494 – relipse 2013-10-09 05:31:28