小編給大家分享一下php中常見(jiàn)的錯(cuò)誤類(lèi)型有哪些,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
php中的錯(cuò)誤類(lèi)型有:1、程序本身的錯(cuò)誤;2、未定義符號(hào);3、操作系統(tǒng)所帶來(lái)的差異;4、PHP配置差異;5、SAPI差異;6、運(yùn)行錯(cuò)誤 ;7、PHP錯(cuò)誤;8、定義錯(cuò)誤處理器。
PHP的錯(cuò)誤類(lèi)型
一,程序本身的錯(cuò)誤
這種錯(cuò)誤是比較容易就可以處理的錯(cuò)誤,比如說(shuō)語(yǔ)法錯(cuò)誤或者是編譯器無(wú)法解析,這些錯(cuò)誤在編譯的時(shí)候,就會(huì)不通過(guò)編譯,然后可以根據(jù)錯(cuò)誤的提示,找到具體的錯(cuò)誤代碼。但當(dāng)使用eval()執(zhí)行的代碼發(fā)生錯(cuò)誤時(shí),在編譯期間是發(fā)現(xiàn)不了,它只能等到代碼在執(zhí)行的過(guò)程中,對(duì)其編譯產(chǎn)生錯(cuò)誤,如我們執(zhí)行下列代碼,就會(huì)在執(zhí)行過(guò)程中出現(xiàn)錯(cuò)誤:
<?php echo "this will be echo to putty"; eval("php error when parser"); ?>
這種錯(cuò)誤和其它的代碼錯(cuò)誤不同的是,在位于它之前的echo是可以輸出的。而其它的代碼錯(cuò)誤是不會(huì)有任何輸出的,因?yàn)榫幾g就通不過(guò),不會(huì)運(yùn)行。
二,未定義符號(hào)
當(dāng)PHP執(zhí)行的時(shí)候,它可能遇到許多變量、函數(shù)等它不知道的名字,因?yàn)镻HP在編譯的時(shí)候,并沒(méi)有完整的了解所有的符號(hào)名稱(chēng)、函數(shù)名等。
如果只是未定義的常量或者變量,這是只是一個(gè)通知的形式告知。但如果是遇到未定義的函數(shù)或者類(lèi),程序?qū)?huì)終止運(yùn)行。在關(guān)于找不到類(lèi)的時(shí)候,如果用戶定義了叫做__autoload的函數(shù),它將在PHP遇到一個(gè)未定義的類(lèi)時(shí)調(diào)用,如果通過(guò)這個(gè)函數(shù)可以返回類(lèi),新加載的類(lèi)將會(huì)被使用,不產(chǎn)生任何錯(cuò)誤。
三,通用性錯(cuò)誤
3.1 操作系統(tǒng)所帶來(lái)的差異
一些只在某特殊的平臺(tái)可用的PHP函數(shù)。
一些在某特殊的平臺(tái)不可用的PHP函數(shù)。
一些在不同的平臺(tái)下有著細(xì)微差別的PHP函數(shù)。
區(qū)別文件名中的路徑成份的字符。
外部程序或者服務(wù)并不是在所有平臺(tái)中都可用。
3.2 PHP配置差異
比如配置選項(xiàng)magic_quotes_gpc,如果這個(gè)選項(xiàng)是開(kāi)啟的,PHP將增加斜線到所有的外部數(shù)據(jù)中。這時(shí),如果將程序移植至另一臺(tái)沒(méi)有開(kāi)啟這個(gè)選項(xiàng)的服務(wù)器上上時(shí),用戶的輸入就會(huì)有問(wèn)題了。處理類(lèi)似差異的辦法是檢查PHP代碼并通過(guò)ini_get()函數(shù)查看選項(xiàng)是否啟用,然后作一個(gè)統(tǒng)一的調(diào)整。
register_globals : 該設(shè)置決定PHP是否引入GET,POST,cookie,環(huán)境變量或者服務(wù)器變量為全局變量。一般避免使用。
allow_url_fopen: 如果這個(gè)選項(xiàng)設(shè)置為false,對(duì)URL文件操作的功能是關(guān)閉的。
3.3 SAPI差異
四,運(yùn)行錯(cuò)誤
如對(duì)硬盤(pán)數(shù)據(jù)或者網(wǎng)絡(luò)操作以及數(shù)據(jù)庫(kù)調(diào)用時(shí),由于PHP本身以外的因素所造成的錯(cuò)誤。
五,PHP錯(cuò)誤
PHP中的錯(cuò)誤機(jī)制是被所有的PHP內(nèi)置函數(shù)使用的,通常這個(gè)簡(jiǎn)單的機(jī)制打印出一個(gè)錯(cuò)誤信息,包括一些錯(cuò)誤相關(guān)的基本信息。
錯(cuò)誤級(jí)別分為:
E_ERROR:嚴(yán)重錯(cuò)誤。 E_WARNING:最普通的錯(cuò)誤類(lèi)型。 E_PARSE:解析錯(cuò)誤在編譯的時(shí)候發(fā)生。 E_STRICT:這個(gè)錯(cuò)誤級(jí)別是唯一不包含在E_ALL常量中的,為了讓PHP4到PHP5的遷移更加容易。 E_NOTICE:表示運(yùn)行的代碼可能在操作一些未知的事情。 E_CORE_ERROR:由于擴(kuò)展啟動(dòng)失敗等導(dǎo)致的。 E_COMPILE_WARNING:編譯的時(shí)候出現(xiàn)的警告,告訴用戶一些不推薦使用的語(yǔ)法信息。 E_COMPILE_ERROR:編譯錯(cuò)誤。 E_USER_ERROR E_USER_WARNING 可以用error_reporting(Integer)函數(shù)來(lái)設(shè)置哪些錯(cuò)誤被報(bào)告。如所有的錯(cuò)誤,表示為E_ALL ,除了通告以外的所有錯(cuò)誤,可以表示為E_ALL & ~E_NOTICE. display_errors(boolean):這個(gè)設(shè)置控制錯(cuò)誤是否作為PHP輸出的一部分顯示出來(lái)。 log_errors(boolean),這個(gè)設(shè)置控制錯(cuò)誤是否記錄。日志的地址是通過(guò)error_log(String)設(shè)置決定的。默認(rèn)情況下,錯(cuò)誤被記錄到WEB服務(wù)器的錯(cuò)誤日志中。 html_errors(boolean):設(shè)置控制是否在錯(cuò)誤信息中采用HTML格式 。
六,定義錯(cuò)誤處理器
可以調(diào)用 set_error_handler(error_handle_function,error_types)指定錯(cuò)誤處理器。如
function customError($errno, $errstr, $errfile, $errline) { echo "<b>Custom error:</b> [$errno] $errstr<br />"; } set_error_handler("customError"); // 默認(rèn)為所有的錯(cuò)誤,就是E_ALL.
看完了這篇文章,相信你對(duì)php中常見(jiàn)的錯(cuò)誤類(lèi)型有哪些有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!
本文名稱(chēng):php中常見(jiàn)的錯(cuò)誤類(lèi)型有哪些-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://www.rwnh.cn/article4/pdioe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、小程序開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、企業(yè)建站、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容