對於簡單的項目或僅僅想知道某一位置的某個變量是什麼值,直接使用var_dump配置exit來打印和中斷就能夠了,方便又快捷,php
而對於大型項目的調試,或想了解某個系統的整個運行過程,xdebug可能會是更好的選擇。html
網上大多數xdebug教程中的項目代碼和運行環境是配置在本地,IDE也是在本地,web
而我所使用的環境是運行於遠程服務器中,因此xdebug配置起來稍有不一樣。json
環境介紹:
本地:win10 + vscode
遠程:CentOS + LNMP + xdebug
服務器
即PHP的運行環境在遠程服務器中,項目代碼放在本地,使用nfs共享映射到虛擬機中運行。ssh
1.ssh到虛擬機,檢查並安裝php的xdebug擴展php-fpm
2.配置php.ini中的xdebugspa
zend_extension=xdebug.so [XDebug] xdebug.remote_enable = on xdebug.remote_autostart = 1 ;xdebug.remote_host = 192.168.10.1 xdebug.remote_port = 9000 xdebug.remote_connect_back = 1 xdebug.auto_trace = 1 xdebug.collect_includes = 1 xdebug.collect_params = 1 xdebug.remote_log = /tmp/xdebug.log
「remote_enable」是容許遠程調試
「remote_autostart」遠程調試自動啓動?
「remote_host」是指定經過哪一個IP進行遠程調試,也就是你IDE所在的IP(這裏是192.168.10.1便是我本地,但當下面remote_connect_back設置了時,這個IP設置無效,因此我註釋了),
「remote_port」是在vscode中設置的監聽端口,是本地的端口哦~ 即當開始調試時,xdebug將與這個端口通信
「remote_connect_back」不知道是什麼意思,只是若是開啓此,將忽略上面的 xdebug.remote_host 的設置
其它的可自行搜索xdebug配置說明。插件
3. 重啓php-fpm,或web環境vagrant
4.vscode中安裝插件」PHP Debug」
5.配置launch.json
{ "name": "Listen for XDebug", "type": "php", "request": "launch", "stopOnEntry":false, "localSourceRoot": "Z://php_project/", "serverSourceRoot": "/home/ryan/php_project/", "port": 9000 }, { "name": "Launch currently open script", "type": "php", "request": "launch", "program": "${file}", "cwd": "${fileDirname}", "port": 9000 }
以上,其中」localSourceRoot」是項目代碼在本地的路徑,設置的值是當前工做區根目錄,也就是我項目根目錄。
」serverSourceRoot」是遠程虛擬機中的代碼路徑,」port」是本地IDE在debug時會監聽的端口,遠程xdebug與vscode通訊時就是使用這個端口。
以上設置完畢後就能夠開始斷點調試!!!
參考連接: