PHP開發環境(XAMPP+XDebug+VSCode)搭建


PHP開發環境(XAMPP+XDebug+VSCode)搭建

XAMPP

當年一開始學習PHP的時候就是用的xampp傻瓜式一鍵安裝PHP開發環境,這么多年過去了,這個工具依然好用。

這個程序會把apache/PHP/Mysql打包安裝,如果你不想折騰的話,強烈建議使用。

下載

XAMPP的官網是https://www.apachefriends.org/zh_cn/index.html

安裝包托管網站是https://sourceforge.net/projects/xampp/files/,有各種平台的安裝包。

這里提供一個上傳到百度盤的最新windows安裝包:

鏈接:https://pan.baidu.com/s/116ZZ-1BA1xiRzdfOG4OQSQ
提取碼:d25q
復制這段內容后打開百度網盤手機App,操作更方便哦--來自百度網盤超級會員V1的分享

安裝

安裝過程沒啥好說的,一路next,值得注意的是一開始會彈窗說殺毒軟件可能會阻止程序安裝,但我沒有理會,順利安裝完畢。

運行后會顯示XAMPP的控制面板:

要使用相應的服務只要在最左邊的一列打勾就可以自動安裝,然后點擊右側的start就能運行。

我使用的時候因為之前安裝了VMware,端口沖突,Apache服務使用的默認端口是443,所以需要修改端口。

要檢查端口占用XAMPP提供一個非常方便的工具,Netstat,就是右側那個綠色地球一樣的圖標:

這里會顯示你電腦上所有的端口占用情況,選擇一個空閑的端口即可,我選了8001。

修改端口的話是config->service and port,然后填入新端口號即可:

那個主端口不用理會,80是http服務的默認端口,由系統接管。

這里不得不說XAMPP有點坑的地方了,修改了這里並不算玩,你如果嘗試啟動Apache服務的話依然會沒有響應,還沒報錯和日志,只有用CMD從工作目錄啟動httpd.exe才能發現Apache依然是嘗試啟用443端口。所以這里還要額外修改Apache中的配置:

在Apache的配置文件httpd-ssl.conf中搜索443就能找到監聽端口配置,修改為新端口號:

配置虛擬主機

虛擬主機的配置目錄位於xampp\apache\conf\extra

在httpd.conf中默認是已經打開虛擬主機配置的,所以這里不需要再修改,直接修改httpd-vhosts.conf文件:

找到

NameVirtualHost *:80

這一行,去掉注釋。

在尾部追加自己定義的虛擬主機設置:

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "D:/workspace/myweb.com"
    ServerName myweb.com
    ServerAlias www.myweb.com
    ErrorLog "logs/myweb.com-error.log"
    CustomLog "logs/myweb.com-access.log" common
<Directory "D:/workspace/myweb.com">
Require all granted
</Directory>
</VirtualHost>

重啟apache服務,OK。

VSCode

安裝x-debug

x-debug是php的動態調試工具,安裝以后就可以在VSCode中設置斷點,動態查看PHP運行時的變量和函數調用情況。

這里說一下XDebug的存在意義和運行機制:

PHP可以說是一門專門用於互聯網開發的語言,所以基本上和web服務器是密不可分的,商用開發也基本上都是把代碼放在遠程服務器上,直接在Linux服務器上運行調試,這樣才能接近正式環境,但這樣也遇到一個問題,就是沒法像JAVA或者Android開發時那樣,在本地IDE方便地進行運行時debug。

XDebug就是用於這種情形下地PHP開發擴展,本體安裝在需要調試的web服務器上,當你用瀏覽器訪問web服務器的某個PHP頁面的時候,XDebug就會和你的本地IDE建立一個通信,讀取你IDE設置的斷點等信息,然后就能像其它本地語言調試那樣進行逐步調試。

理解了上面這些,就能理解下面的一些配置意義。

x-debug的官方下載頁面在這里

這里需要按照你的PHP版本下載對應的X-Debug,如果用的是XAMPP自帶的PHP,可以在XAMPP的根目錄下查看readme_en.txt文件:

我這里PHP版本就是8.0.2 VS16 x64 TS,對應選擇下載就行了。

下好后把下載的DLL放到PHP/ext目錄下,再修改PHP根目錄下的php.ini文件,在尾部追加:

[xdebug]
zend_extension=php_xdebug-3.0.3-8.0-vs16-x86_64.dll
xdebug.client_port = 9005
xdebug.client_host = localhost
xdebug.log = D:/software/Coding/xampp/php/xdebug.log
xdebug.mode=trace,debug,develop
xdebug.start_with_request=yes
xdebug.output_dir = D:/software/Coding/xampp/php/tmp
xdebug.force_display_errors = 1

需要注意的是第二行要准確地指定到剛剛安置好地DLL文件,因為這里是安裝到PHP的指定擴展文件目錄,即php/ext所以是不用指定完整目錄路徑,只要指定文件名就行,如果你存放在其它目錄則需要指定完整路徑。

還有一個需要注意的地方是不能省略dll文件后綴名,網上有的教程是省略的,那樣是不能成功加載xdebug的。

這里從上到下解釋一下xdebug配置項的用途,需要特別說明的是這里的配置是適合xdebug 3.0.3版本的,所以和其它教程中老版本的是不同的。

  • 網上找到的諸多XDebug配置教程都是老版本的配置,均不能在最新版本中使用,所以強烈建議用戶直接去XDebug的官網配置項介紹頁面自行查看最新的配置方式。

  • 吐槽一下,因為這個原因我折騰了一個下午加晚上。

下面是對XDebug主要用到的配置項的介紹:

  • xdebug.client_port:IDE環境的監聽端口號,XDebug啟動后會使用這個端口號與IDE環境交互,3.0.3版本中默認值已經變成了9003,可能是以前9000端口經常被其它程序占用的緣故,雖然9003已經比較冷門,多半可以直接使用默認值,但無論如何這里最好還是直接顯示指定一個端口號,誰知道官方會不會變來變去的。

  • xdebug.client_host:IDE環境的主機名/IP,如果是Linux環境可以使用網絡套接字,這在官方介紹頁面里有詳細說明。如果client_port,同樣是用於與IDE通信的。

  • xdebug.log:XDebug運行時日志文件,包括與IDE建立通信失敗等都會輸出到這個文件,所以如果搗鼓了半天依然不能正常在IDE中斷點調試,不妨先配置上這個選項自行查看日志記錄。

    我排查問題的時候配置了這個,但是依然沒有日志產生,后來發現是xdebug.mode配置項的問題。

  • xdebug.mode:XDebug的運行模式,有多種可選,並且可以搭配使用,這里介紹我用到的三種:

    • trace:對函數調用進行跟蹤。

    • debug:對代碼進行步進(step)調試。

      注意:如果沒有啟用debug模式是不能在IDE中使用斷點進行步進調試的!這是個大坑,我就是因為這個折騰了好長時間。

    • develop:提供一些開發幫助功能,比如統計代碼運行時間和內存占用等。

  • xdebug.start_with_request:是否在http請求產生的時候就啟動XDebug。

  • xdebug.output_dir:XDebug跟蹤到的函數調用等信息會輸出到這個目錄。

    可以用這個目錄產生的日志判斷XDebug的安裝問題,比如我的情況就是能產生函數跟蹤日志,但是並不能產生XDebug運行時和IDE通信的那個日志,后來發現是因為xdebug.mode沒有啟用步進調試模式,XDebug就不會去嘗試和IDE通信。

  • xdebug.force_display_errors:是否強制顯示錯誤。

    這個選項可以覆蓋掉PHP中指定的錯誤輸出模式,一般是不用設置的,我這里是因為XDebug一直不能和IDE正常通信,為了查錯添加的。

現在可以驗證是否配置好了XDebug,先重啟Apache服務,通過在php文件中加入echo xdebug_info();的方式輸出XDebug配置信息:

這樣就表示已經安裝好了xdebug模塊。

VSCode設置

然后在VSCode中安裝兩個PHP插件:

然后在文件>首選項>設置中的擴展下,選擇PHP:

在打開的JSON文件中加入:

    "php.validate.executablePath": "D:/software/Coding/xampp/php/php.exe",
    "php.executablePath": "D:/software/Coding/xampp/php/php.exe",

再在工作區中添加網站根目錄:

然后在debug窗口給網站項目加入生成debug配置文件,不需要修改,保持默認即可:

這里會自動生成兩個debug配置:

  • Launch currently open script:這個是用於直接在IDE用運行PHP代碼並在內置終端顯示結果。
  • Listen for XDebug:這指的是開啟一個對XDebug的監聽,如果目標服務器上配置了XDebug,並且主動連接到本機IDE的XDebug監聽,就能實現斷點調試等IDE功能。

IDE+XDebug聯合調試

IDE這邊准備好了,開啟PHP跳步debug:

  1. 先確保設置好配置的XDebug有被正常加載,如果沒有就重新啟動Apache。

  2. 在VSCode中運行Listen for XDebug,這時候會出現一個debug工具條:

這表示IDE中啟動了XDebug客戶端監聽程序,只要WEB服務器的XDebug和這邊能建立正常通信,就可以進行跳步debug調試。

  1. 在代碼中加入斷點。當然也可以先加斷點再啟動監聽,無所謂先后順序。

  2. 啟動瀏覽器,訪問目標WEB服務器,這里我是本機配置的虛擬服務器:

  3. 程序窗口會自動切換到VSCode,如果沒有,手動切換。VSCode這種會顯示執行到斷點位置,並且有變量信息等:

  4. 后面就是正常的逐步debug或者跳步之類的調試操作了,不屬於本文介紹范圍。

好了,所有內容介紹完畢,不得不說這里邊的坑真多,整整花了一個下午加一個晚上才排查好,心好累。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM