php是執行在伺服器上的指令碼程式,通常除錯bug,直接在瀏覽器頁面就可以列印出錯誤資訊,憑此基本能解決所有bug,但是有時候,可以說大多數時候,php會直接處理客戶端的請求,作為資料介面傳遞資料,沒有任何的ui介面,這樣對於複雜的邏輯除錯起來就非常困難,當然你可以使用log,把所有的執行資訊列印到一個外部文字中,可是習慣了ide斷點單步執行的我們對於這種原始的辦法是無法接受的。下面就要描述使用流行的XDebug來遠端除錯,達到的目的是,如果有客戶端(手機app,pc應用,瀏覽器... ...)請求了php,那麼就需要在我的php中斷點處自動停止,並實時顯示所有變數的值,指標的變化。
第一步:下載XDebug
下載xdebug程式dll,下載之前,寫一個php,程式碼就這些。
1 <?php 2 phpinfo(); 3 ?>
在瀏覽器上開啟這個php,按住CTRL+A再按CTRL+C複製整個頁面,這樣複製:
在瀏覽器上開啟這個網址:http://xdebug.org/wizard.php,在頁面的大文字框裡邊CTRL+V,將上面複製的內容複製進去
什麼都不用,直接點選紅框中的按鈕,稍等,會出現頁面:
下載上述框選的dll,並記錄下下面框選的這一行
zend_extension = C:\WebEnvironment\php-5.5.5\ext\php_xdebug-2.3.2-5.5-vc11-x86_64.dll
到此為止,我們準備好了xdebug。
第二步:配置xdebug
開啟php的目錄,找到ext資料夾,把下載好的xdebug的dll複製進去。
開啟php.ini檔案,在檔案末尾加上這些配置程式碼:
[XDebug]
zend_extension = C:\WebEnvironment\php-5.5.5\ext\php_xdebug-2.3.2-5.5-vc11-x86_64.dll
;是否開啟自動跟蹤
xdebug.auto_trace= On
;是否開啟異常跟蹤
xdebug.show_exception_trace= On
;是否開啟遠端除錯自動啟動
xdebug.remote_autostart= On
;是否開啟遠端除錯
xdebug.remote_enable= On
;允許除錯的客戶端IP
xdebug.remote_host=localhost
;遠端除錯的埠(預設9000)
xdebug.remote_port=9000
;除錯外掛dbgp
xdebug.remote_handler=dbgp
;是否收集變數
xdebug.collect_vars= On
;是否收集返回值
xdebug.collect_return= On
;是否收集引數
xdebug.collect_params= On
;是否開啟除錯內容
xdebug.profiler_enable=On
上面的程式碼加好之後,關閉php.ini,重啟Apache。到此為止,我們便設定好了xdebug。
第三步:在AptanaStudio中使用XDebug
直接點選OK->OK,關閉對話方塊,配置就完成了。
第四步:除錯程式
這裡有一個使用Plupload來上傳大檔案的程式。首先我要開啟Aptana(沒ide可除錯不了哦^_^),開啟我的上傳檔案upload.php(客戶端上傳成功後,由該php來處理檔案,比如檔案塊合併寫入到本地伺服器的某個目錄等等)。
在客戶端上傳成功之後,我的AptanaStudio直接就自動跳轉到除錯介面(初次使用該功能可能會有一個詢問是否進入除錯的對話方塊,確認並記住操作,下次就直接進入除錯狀態)
upload就這些程式碼:
前端上傳完成之後,會有一個藍色箭頭指向我的php程式碼的第一行,按下工具欄最右邊的蟲子樣子的按鈕手動切入除錯狀態。
到此為止,就可以進行除錯了,任何前端發起的對該php指令碼的請求,都可以在ide中進入除錯環境,由我們來控制php指令碼是否繼續往下執行,可以看到實時的變數變化,是不是和其他所有的debug環境一樣了呢。
注:其他的php開發環境,如zendstudio,eclipse,sublime等,由於這些ide都是基於eclipse修改來的,都可以使用上面的方法配置xdebug除錯環境