2012-10-07

Windows 使用 Notepad++ 和 Xdebug 除錯 PHP 程式

如果你是用 Windows 在寫 PHP 的程式,然後,像阿舍一樣,懶得在開發環境上先安裝 Java 再安裝 Eclipse PDT 或 Netbeans PHP 的話 (其實,是阿舍不想裝 Java 哩!呵 !),就可以考慮和阿舍一樣,用輕量級的 Notepad++ 編輯器搭配 Xdebug 來除錯 PHP 程式囉!阿舍是在晃 Xdebug 網站的時候才發現 Notepad++ 可以支援 Xdebug 除錯,試了一下,還滿方便的哩 !

Notepad++ 的 Debug 畫面

想阿舍上次用 Notepad++ 的時候,還是 3.x 版的年代,而現在,都已經升到  6.x 了哩 ! 阿舍看了一下新版 Notepad++ 和 Plugin 的功能,都覺得 Notepad++ 應該可以改名為 Notepad# 了(就是 Notepad++++ 的意思哩 ! ) 扯遠了 ! 呵 ! 

要用Notepad++ 編輯器搭配 Xdebug 來除錯,首先,當然是要先安裝 Notepad++ 和 Xdebug 囉!安裝 Notespad++ 的方式很簡單,只要到這裡下載安裝程式來執行,就可以安裝好的,而 Xdebug 的安裝方式稍微複雜一些些,因為,要先判斷該下載那一個版本的 Xdebug,然後,還要做些設定才行。

Xdebug 的下載網頁在這裡,如果不知道該下載那個版本的那個檔案的話,請透 phpinfo() 指令產出 PHP 的安裝資訊網頁,然後,把整個網頁全選複製後,貼到 Xdebug 網站的這個網頁並點選下方的「Analyse my phpinfo() output」按鈕,接著,就會出現要下載的檔案的連結及安裝的路徑(如下圖)。


下載下來的檔案要放到 PHP 安裝資料夾下的 ext 資料夾裡,檔案放好之後,請打開 php.ini (如果是用 AMPPS 的話,要打開的是 AMPPS 安裝資料夾下的 Apache 資料夾裡的 php.ini 而不是 php 資料夾下的 php.ini),然後,把下面這些設定都複貼到 php.ini,不過,有幾個項目需要調整,參考下面的說明文字來調整。

;面這一項後面的檔案路徑請改成下載來的 xdebug 檔案所放置的位置
zend_extension = "C:\Program Files (x86)\Ampps\php\ext\php_xdebug-2.2.1-5.3-vc9.dll"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
;如果有採用虛擬主機及網域的話,下面這一項的 127.0.01 就要改成網域名稱
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_mode=req
;下面這一項也可更改成其它名稱,待會設定 Notepad++ 會用到的
xdebug.idekey=ayubiz
xdebug.show_exception_trace=0
xdebug.show_local_vars=9
xdebug.show_mem_delta=0
xdebug.trace_format=0
xdebug.profiler_enable  = 1
;下面這二項所設定資料夾需手動建立或自行變更其它位置和檔案名稱
xdebug.remote_log="c:\tmp\xdebug\xdebug.log"
xdebug.profiler_output_dir ="c:\tmp\xdebug"

上面的項目貼好並調整好之後,請重新啟動 Apache,然後,再打開 phpinfo 的網頁,應該就可以看到 Xdebug 的設定值,如果找不到的話,那就是沒有安裝成功,請再依照上面的說明操作一次,或是確認檔案的位置及路徑是不是都正確哩!

搞定 Xdebug 之後,要來安裝 Notepad++ 的 XDebug 工具,請到這裡來下載 DBGP Plugin,下載下來後,請把它解壓縮,並且,將 dbgpPlugin.dll 這個檔案複製到 Notepad++ 的安裝資料夾下的 plugins 資料,檔案複製完成後,請關閉之後再重新啟動 Notepad++ 來讓新安裝的 Plugin 生效,然後,請點選上方選單的「外掛模組」,就會出現「DBGP」項目,請點選它後,再點選「Config ...」項目進入 DBGP 的設定畫面。


請將 DBGP 的設定畫面設定如下圖,如果是用虛擬主機的話,「Remote Server IP」項目要改虛擬主機的網域,而「IDE KEY」項目要改成在 php.ini 的 「xdebug.idekey」項目的設定值,「Remote Path」和「Local Path」這二個項目請設成要 Debug 的網站的根資料夾的路徑,另外,還要勾選下方的「Refresh local context on erery step」和「Refresh global context on every step」,都設定好之後,請點選下方的「Ok」來儲存設定。


再來,就可以開始準備進行 Debug 了,請 在 Notepad++ 先開啟要除錯的檔案,然後, 點選上方選單的「外掛模組」>「DBGP」>「Debuger」來打開 Debuger 工具,接著,請設定一個中斷點(Break Point),設定方式是將游標停在要設為中斷點的那一行,之後,再點選下方 Debuger 的大紅點,就可以了。



接下來,請用瀏覽器開啟要除錯的網站,然後,在要開啟的網址後面加上「?XDEBUG_SESSION_START=任意字串的名稱」,例如,阿舍要除錯「http://127.0.0.1/index.php」這個網址,那麼,就要在瀏覽器用「http://127.0.0.1/index.php?XDEBUG_SESSION_START=aaaaa」網址來開啟,接著,Notepad++ 就會跳出來,就可以開始除錯了哩 ! ....

參考資料:
http://webcheatsheet.com/php/debug_php_with_xdebug.php
http://amiworks.co.in/talk/debugging-php-using-xdebug-and-notepad-part-i/


推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

1 則留言 :

凍仁.翔 (Chu-Siang Lai) 提到...

看來 Vim 也可搭配 xdebug 使用,來研究看看了!

張貼留言

歡迎留言提問和討論 .... 😁