一、前言介紹
php 程式開發,可以在 windows 或是 linux 的環境下進行本文先介紹是
windows 環境下的 phpstorm 在 wamp 整合包的 php 除錯
wamp 整合包 就是 windows下將 apache+mysql+php 整合成一個壓縮檔或安裝程式我最常用的 wamp整合包是 wagon ,內容包含 git,composer,uwamp
而uwamp 又包含了 apache,mysql,php
wagon 是相當完整的 php 程式開發整合包,適合開發一般 php 網頁程式, 在於開發 laravel MVC 也是相當方便
wagon 的介紹及下載,請參考 laravel 道場
二、啟動 apache+mysql
執行 uwamp 以啟動 apache,mysql,php
我的 uwamp apache 的 web port 是設定 8001
apache document root 是位在 wagon\uwamp\www
所以開啟網頁是 localhost:8001/some_one.html
三、 顯示 php 環境資訊
程式碼
<?php phpinfo(); ?>
存檔 phpinfo.php
瀏覽器開啟
localhost:8001/phpinfo.php
從圖可看出 目前伺服器 php 版本為 5.6.10 32位元
要進行除錯,必需安裝 xdebug 這一個 php 延伸套件
四、 xdebug 的安裝
開啟 xdebug 下載區
配合 php 版本,應下載 PHP 5.6 VC11 TS (32 bit) ,其版本為2.3.2 並存檔至 wagon\uwamp\bin\php\php-5.6.10-Win32-VC11-x86\ext\
開啟 php.ini(如為 wagon ,php 設定檔為 php_uwamp.ini)
在檔案最後加入
[XDebug] zend_extension = "D:\wagon\uwamp\bin\php\php-5.6.10-Win32-VC11-x86\ext\php_xdebug-2.3.2-5.6-vc11.dll" xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp" xdebug.remote_host = "localhost" xdebug.remote_port=9000
zend_extension 所指定的位置如果是放在 php 的 ext 底下,則直接寫成
zend_extension = "php_xdebug-2.3.2-5.6-vc11.dll"
存檔完,記得重新啟 apache
再度瀏覽器開啟
localhost:8001/phpinfo.php
我們按 Ctrl-F 搜尋 xdebug
看到 Zend Engine 就表示環境已支援 xdebug了
五、phpstorm 編輯器的設定
[File]->[Settings]
name 填伺服器名稱,名稱是自訂的,後面除錯時會用到,或是phpstrom 給的 Unnamed
Host 填IP 或 localhost (在本機wagon開發,所以 apache 可以用 localhost)
Port 填 實際 apache 的 web port ,我的電腦是 8001
Debugger 維持原來的 Xdebug
六、設定中斷點
範例程式
<?php $a=1; echo $a; for ($b=1;$b<=10;$b++){ $c=$b*$b; echo $c."<br>"; } ?> <a href="test1.php">test1</a>
將程式存在 wagon.wuamp/www/test/test.php
在程式碼的行號的右邊,點一下,會出現紅點,表示這是程式的中斷點,若要取消,再點一次
或者多個位置(或不同的網頁的原始檔位置)設定中斷點,中斷點必需是 php 程式而不是 html, 請參考下圖
七、phpstrom debug 編輯組態
[Run]->[Edit Configurations]
Server 選 之前 [File]/[Settings] 所設定的 Server name
Start URL 填網頁的啟始網址,在下一行會出現完整的網址,可以試點看一下網頁是否正常開啟
Browser 選你想要用何種瀏覽器開啟網頁
八、在 phpstorm 中 php 除錯
要對 Php 網頁除錯,可以點工具列上[蟲]的按紐
或 [Run]->[Debug 'Unnamed'] ,其中的 'Unnamed' 是 本次debug 的名稱,而不是 Server 的名稱
九、在瀏覽器與編輯器之間切換
瀏覽器會開啟網頁執行,一直到遇到中斷點,網頁會暫停
此時的瀏覽器網址列會有 ?XDEBUG_SESSION_START=XXXXXX
但是如果之後有網站內的超連結,此時的 ?XDEBUG_SESSION_START=XXXXXX 會不見,但是網頁仍處於 除錯狀態
以上面的測試網頁 test.php 為例,因為已在第2行設了中斷點,所以程式是停在phpstorm 的 test.php 的第2行
十、 F7(step into) 與 F8(step over)
step into : 逐行除錯,如遇函數,則進入(into) 函數內逐行除錯
step over: 逐行除錯,如遇函數,將函數視為一行,執行該函數後,停在下一行
不管是 step into 或 step over , phpstorm 都會將目前有執行過的變數值顯示出來,如圖所示
或是將滑鼠指標移停在變數位置,例如停在 $a的位置,也會顯示該變數的值
或是此時按[右鍵]->[Add watches],填入要監看的變數
十一、F9(resume program)
resume program :繼續執行,一直到中斷點,如遇不到中斷點,等同不再除錯
十二、Ctrl-F2(Stop)
要重新執行程式,需先停止 (Stop) 目前的執行,再重新執行或除錯
No comments:
Post a Comment