前言:這里的調(diào)試方法是指找錯誤,和分析錯誤的方法。
測試代碼最好打開php錯誤報告,方法有兩種一種是在php.ini里面設(shè)置。另外一種是使用函數(shù)error_reporting。打開php.ini找到error_reporting修改成error_reporting = ALL;當(dāng)然我們當(dāng)初是拷貝的開發(fā)那份,所以是默認(rèn)打開的,如果你的關(guān)閉了只要修改這里就好了。reporting也有等級區(qū)分。以后在介紹php.ini的時候詳細(xì)介紹。
另外如果命令行模式我們一般會加上
在命令行下試試下面的代碼吧
將這段代碼保存到d:/www/test/a.php然后到cmd中運(yùn)行php d:/www/test/a.php看看效果吧
php調(diào)試
錯誤1語法錯誤:這類錯誤最容易定位,無論是web程序還是命令行程序,都會給出出錯的行,然后你根據(jù)出錯的行去修改調(diào)試,直到正確。還記得emacs C+c r今天再教大家一個C+c d 修改.emacs文件在以下代碼的上方
加入
在(define-key php-mode-map [(control c) (r)] ‘php-run)下一行加入(define-key php-mode-map [(control c) (d)] ‘php-debug)
然后重啟emacs打開一個php文件輸入<?php echo “我是個錯誤的示范” echo ;?>試試C+c d吧是否提示錯誤啦。
錯誤2沒有運(yùn)行:這類錯誤是指運(yùn)行過程中中斷了,調(diào)試這類錯誤我通常是在有可能出錯的地方前后加入echo “num”;比如如下代碼
也許你對&&理解有誤導(dǎo)致了這個問題,上面的代碼將輸出13而2沒有輸出所以是if判斷有問題。
錯誤3算法錯誤:這類錯誤簡而言之就是結(jié)果和你預(yù)期不符合,這樣的錯誤比較難找原因。你需要清晰的邏輯,首先你要知道每一行代碼對運(yùn)算結(jié)果的影響,一行一行的輸出看看哪一行輸出不是預(yù)期結(jié)果。
二、輸出輸出單行用echo,print。為了輸出美觀點(diǎn),一般在命令行模式比如你在用C+c r調(diào)試的時候一般在后面跟著輸出”n”比如<?php echo “測試輸出n”;echo “測試輸出n”;?>而在web調(diào)試的時候輸出”<br />”比如<?php echo “測試輸出<br />”;echo “測試輸出<br />”;?>
輸出其他類型可以用var_dump、print_r、var_export,當(dāng)然這些函數(shù)也可以打印字符串,只是多打幾個字母而已。其中var_dump和var_export類似只是打印出數(shù)組或?qū)ο蟮淖址问?,而var_dump還會打印出變量的類型,而print_r打印出的內(nèi)容更容易閱讀。試試下面的代碼吧。
上例中的最后三行,顯示了幾種常見用法。即字符串中有和包裹字符串的引號相同時使用反斜杠來區(qū)分比如”我是”雙引號”" ’\'我是單引號”,如果單引號和雙引號混用時要注意包裹范圍。字符串和字符串之間用.來鏈接。
這里告訴大家一個更加實用的函數(shù)
這樣在web輸出的時候也能夠容易讀一點(diǎn)只要把這段代碼放到要運(yùn)行的php之前即可。
為了調(diào)試方便一般會再輸出后面加上exit;讓代碼停止運(yùn)行。
三、區(qū)別正式環(huán)境和測試環(huán)境有時候需要正式環(huán)境和測試環(huán)境內(nèi)容不同,一個方法是在apache收到請求的時候就在環(huán)境里面告訴php是測試環(huán)境還是正式環(huán)境。就是在虛擬主機(jī)里面配置SetEnv ENV “dev”在php代碼中可以用$_SERVER[\'ENV\']取得dev這個值當(dāng)然ENV和dev都是自定義的。這樣就可以區(qū)分是什么環(huán)境了。
另外有時候你想再正式環(huán)境運(yùn)行代碼,但是又不能讓普通用戶看到你的測試代碼怎么辦呢??梢栽诘刂泛竺婕?__DEBUG__=1來區(qū)分,因為普通用戶瀏覽的時候不會知道還有這個參數(shù)。而你可以用$_GET[\'__debug__\']==1來判斷是不是測試用的。當(dāng)然__DEBUG__ 和 1是自定義的,你可以選任何你知道。
新聞名稱:php調(diào)試方法
轉(zhuǎn)載源于:http://chinadenli.net/article44/cjphee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、品牌網(wǎng)站設(shè)計、品牌網(wǎng)站制作、自適應(yīng)網(wǎng)站、網(wǎng)站設(shè)計、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)