明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

PHP出錯(cuò)界面

[摘要]在web 上所有常見(jiàn)的錯(cuò)誤之一就是無(wú)效的鏈接。一旦從其它站點(diǎn)上出現(xiàn)了無(wú)效的鏈接,你會(huì)重新安排你 的站點(diǎn)。人們會(huì)將他們喜歡的站點(diǎn)存成書(shū)簽,如果在三個(gè)月后再次訪(fǎng)問(wèn)時(shí),僅僅發(fā)現(xiàn)的是'404 Not Fount ' 時(shí),將不會(huì)給他們?nèi)蝿?wù)幫助,告訴他們?nèi)绾螐哪愕恼军c(diǎn)去查找原始的信息。讓我們解...

在web 上所有常見(jiàn)的錯(cuò)誤之一就是無(wú)效的鏈接。一旦從其它站點(diǎn)上出現(xiàn)了無(wú)效的鏈接,你會(huì)重新安排你
的站點(diǎn)。人們會(huì)將他們喜歡的站點(diǎn)存成書(shū)簽,如果在三個(gè)月后再次訪(fǎng)問(wèn)時(shí),僅僅發(fā)現(xiàn)的是'404 Not Fount '
時(shí),將不會(huì)給他們?nèi)蝿?wù)幫助,告訴他們?nèi)绾螐哪愕恼军c(diǎn)去查找原始的信息。讓我們解決這個(gè)問(wèn)題,或者至少
給你的用戶(hù)一個(gè)友好的幫助,一旦他們遇到'a 404' 錯(cuò)誤時(shí),能夠得到一些痕跡。你可以創(chuàng)建普通的頁(yè)面來(lái)
報(bào)告在處理你的頁(yè)面時(shí)所遇到的所有的錯(cuò)誤。

PHP 與Apache一起可以很自由地讓你創(chuàng)建自已的出錯(cuò)頁(yè)面,但是需要重新進(jìn)行配置,并且要編少量的代
碼。先讓我們學(xué)習(xí)配置部分。

Apache的ErrorDocument指示用來(lái)指出在出現(xiàn)錯(cuò)誤時(shí)Apache應(yīng)重定向到哪一個(gè)文檔(或URI)。它允許你
為每一個(gè)你的用戶(hù)可能遇到的錯(cuò)誤代碼指定一個(gè)資源。通過(guò)在你的服務(wù)器配置中增加一個(gè)ErrorDocument 404
/error.php指示。這個(gè)將在用戶(hù)訪(fǎng)問(wèn)一個(gè)不存在的頁(yè)面時(shí),重定向到'error.php'中,下面我們就會(huì)寫(xiě)出
'error.php'頁(yè)面。不要忘了重新啟動(dòng)Apache以使改動(dòng)生效。

接著,我們寫(xiě)出一個(gè)簡(jiǎn)單的error.php:

你所請(qǐng)求的文件 (<?=$REDIRECT_URL?> ) 在這個(gè)服務(wù)器上不存在。
請(qǐng)查找你想要的文件從 <A HREF="/">前頁(yè)</A>。

現(xiàn)在試著讀取一個(gè)在你服務(wù)器上不存在的頁(yè)面,怎么樣,你可以看到error.php了,它有著一個(gè)良好和
友好的消息,并且還有一個(gè)到前頁(yè)的鏈接。

讓我們把它擴(kuò)展一下。正如你所見(jiàn),我在error.php中使用了REDIRECT_URL變量。這個(gè)變量是Apache在
執(zhí)行了一個(gè)ErrorDocument指示時(shí)所設(shè)置的,并且給出了一種可能來(lái)找到原始的資源。在這種情況下,Apache
還設(shè)置了一些別的變量,所有的變量可以在這里找到。使用這些變量可能創(chuàng)建一個(gè)很好的出錯(cuò)頁(yè)面,用于給
用戶(hù)一個(gè)不錯(cuò)與友好的出錯(cuò)頁(yè)面,而代替Apache給出的缺省頁(yè)面。

從PHP頁(yè)面中輸出錯(cuò)誤
從一個(gè)PHP頁(yè)面輸出錯(cuò)誤與模擬Apache對(duì)ErrorDocument指示所做的很象,你只要簡(jiǎn)單地將用戶(hù)重定向,
通過(guò)使用query-string變量,而Apache則通常是設(shè)置在環(huán)境變量里面。這樣就可以使用同一個(gè)出錯(cuò)頁(yè)面來(lái)處
理各種錯(cuò)誤。下面是一個(gè)例子:



<?php

function throw_error($message) {
$error_page = "/err/error.php";

$error_url = $error_page;
$error_url .= "?REDIRECT_ERROR_NOTES=$message";
$error_url .= "&REDIRECT_URL=" . $GLOBALS["PHP_SELF"];
$error_url .= "&REDIRECT_REQUEST_METHOD=$REQUEST_METHOD";
$error_url .= "&REDIRECT_STATUS=501";
Header("Status: 501");
Header("Location: $error_url");
exit;
}

ob_start();
// 使用輸出緩沖以便在這頁(yè)中的任何地方輸出錯(cuò)誤

if(!condition) {
throw_error("the condition failed");
}

ob_end_flush();
// 頁(yè)面處理完畢,刷新輸出緩沖
?>
使用PHP4的輸出緩沖特性對(duì)生成一般的出錯(cuò)報(bào)告功能也會(huì)有幫助。但是在你確認(rèn)整個(gè)出錯(cuò)頁(yè)面處理完畢
時(shí),不要忘記刷新緩沖區(qū),你可以在你的代碼中的任可地方通過(guò)Header調(diào)用來(lái)進(jìn)行重定向。 


標(biāo)簽:PHP出錯(cuò)界面 

相關(guān)文章