使用PHP的錯(cuò)誤處理(轉(zhuǎn)) 沒(méi)話好說(shuō)了。。都到這份上了。。出了錯(cuò)沒(méi)找我。。找它就得了。
Jun 21, 2016 am 09:12 AM錯(cuò)誤|錯(cuò)誤處理
???使用PHP的錯(cuò)誤處理
在web 上所有常見(jiàn)的錯(cuò)誤之一就是無(wú)效的鏈接。一旦從其它站點(diǎn)上出現(xiàn)了無(wú)效的鏈接,你會(huì)重新安排你
的站點(diǎn)。人們會(huì)將他們喜歡的站點(diǎn)存成書簽,如果在三個(gè)月后再次訪問(wèn)時(shí),僅僅發(fā)現(xiàn)的是'404 Not Fount '
時(shí),將不會(huì)給他們?nèi)蝿?wù)幫助,告訴他們?nèi)绾螐哪愕恼军c(diǎn)去查找原始的信息。讓我們解決這個(gè)問(wèn)題,或者至少
給你的用戶一個(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è)你的用戶可能遇到的錯(cuò)誤代碼指定一個(gè)資源。通過(guò)在你的服務(wù)器配置中增加一個(gè)ErrorDocument 404??
/error.php指示。這個(gè)將在用戶訪問(wèn)一個(gè)不存在的頁(yè)面時(shí),重定向到'error.php'中,下面我們就會(huì)寫出
'error.php'頁(yè)面。不要忘了重新啟動(dòng)Apache以使改動(dòng)生效。
接著,我們寫出一個(gè)簡(jiǎn)單的error.php:
你所請(qǐng)求的文件 (=$REDIRECT_URL?>) 在這個(gè)服務(wù)器上不存在。
請(qǐng)查找你想要的文件從 前頁(yè)。
現(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è)面,用于給
用戶一個(gè)不錯(cuò)與友好的出錯(cuò)頁(yè)面,而代替Apache給出的缺省頁(yè)面。
從PHP頁(yè)面中輸出錯(cuò)誤
從一個(gè)PHP頁(yè)面輸出錯(cuò)誤與模擬Apache對(duì)ErrorDocument指示所做的很象,你只要簡(jiǎn)單地將用戶重定向,
通過(guò)使用query-string變量,而Apache則通常是設(shè)置在環(huán)境變量里面。這樣就可以使用同一個(gè)出錯(cuò)頁(yè)面來(lái)處
理各種錯(cuò)誤。下面是一個(gè)例子:??
--------------------------------------------------------------------------------
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)行重定向。??
讀者可以自行設(shè)計(jì),實(shí)現(xiàn)自已的出錯(cuò)頁(yè)面來(lái)適應(yīng)他/她的站點(diǎn)。不要忘了,你可以包含一個(gè)帶email的提
交表單在出錯(cuò)頁(yè)面中,這樣用戶可以反饋給你一些意見(jiàn)。

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The method to get the current session ID in PHP is to use the session_id() function, but you must call session_start() to successfully obtain it. 1. Call session_start() to start the session; 2. Use session_id() to read the session ID and output a string similar to abc123def456ghi789; 3. If the return is empty, check whether session_start() is missing, whether the user accesses for the first time, or whether the session is destroyed; 4. The session ID can be used for logging, security verification and cross-request communication, but security needs to be paid attention to. Make sure that the session is correctly enabled and the ID can be obtained successfully.

To extract substrings from PHP strings, you can use the substr() function, which is syntax substr(string$string,int$start,?int$length=null), and if the length is not specified, it will be intercepted to the end; when processing multi-byte characters such as Chinese, you should use the mb_substr() function to avoid garbled code; if you need to intercept the string according to a specific separator, you can use exploit() or combine strpos() and substr() to implement it, such as extracting file name extensions or domain names.

UnittestinginPHPinvolvesverifyingindividualcodeunitslikefunctionsormethodstocatchbugsearlyandensurereliablerefactoring.1)SetupPHPUnitviaComposer,createatestdirectory,andconfigureautoloadandphpunit.xml.2)Writetestcasesfollowingthearrange-act-assertpat

In PHP, the most common method is to split the string into an array using the exploit() function. This function divides the string into multiple parts through the specified delimiter and returns an array. The syntax is exploit(separator, string, limit), where separator is the separator, string is the original string, and limit is an optional parameter to control the maximum number of segments. For example $str="apple,banana,orange";$arr=explode(",",$str); The result is ["apple","bana

JavaScript data types are divided into primitive types and reference types. Primitive types include string, number, boolean, null, undefined, and symbol. The values are immutable and copies are copied when assigning values, so they do not affect each other; reference types such as objects, arrays and functions store memory addresses, and variables pointing to the same object will affect each other. Typeof and instanceof can be used to determine types, but pay attention to the historical issues of typeofnull. Understanding these two types of differences can help write more stable and reliable code.

std::chrono is used in C to process time, including obtaining the current time, measuring execution time, operation time point and duration, and formatting analysis time. 1. Use std::chrono::system_clock::now() to obtain the current time, which can be converted into a readable string, but the system clock may not be monotonous; 2. Use std::chrono::steady_clock to measure the execution time to ensure monotony, and convert it into milliseconds, seconds and other units through duration_cast; 3. Time point (time_point) and duration (duration) can be interoperable, but attention should be paid to unit compatibility and clock epoch (epoch)

In PHP, to pass a session variable to another page, the key is to start the session correctly and use the same $_SESSION key name. 1. Before using session variables for each page, it must be called session_start() and placed in the front of the script; 2. Set session variables such as $_SESSION['username']='JohnDoe' on the first page; 3. After calling session_start() on another page, access the variables through the same key name; 4. Make sure that session_start() is called on each page, avoid outputting content in advance, and check that the session storage path on the server is writable; 5. Use ses

ToaccessenvironmentvariablesinPHP,usegetenv()orthe$_ENVsuperglobal.1.getenv('VAR_NAME')retrievesaspecificvariable.2.$_ENV['VAR_NAME']accessesvariablesifvariables_orderinphp.iniincludes"E".SetvariablesviaCLIwithVAR=valuephpscript.php,inApach
