亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何設置 VSCode、PHP 調試和 XDebug (Windows 10)

如何設置 VSCode、PHP 調試和 XDebug (Windows 10)

PHP
守著星空守著你 2022-10-22 15:19:33
我想使用 VSCode 的“PHP Debug”插件和 Xdebug 來調試 PHP 腳本。但是當我選擇“調試|開始調試 F5”時,會出現小調試彈出窗口,我被卡住了。暫停、重新啟動、停止按鈕處于活動狀態。Step over, into, out 按鈕處于非活動狀態(灰顯)。調試控制臺中沒有任何反應。(1) 安裝VSCode 1.42.1(2) XAMPP v3.2.4 啟動并運行(3) 使用向導安裝 Xdebug 并粘貼我的 phpinfo() 數據以確定正確的版本。當我從 XAMPP 控制面板啟動 'admin' 并查看 phpinfo 時,瀏覽器會顯示我(以及許多其他內容):[...]This program makes use of the Zend Scripting Language Engine:   Zend Engine v3.4.0, Copyright (c) Zend Technologies    with Xdebug v2.9.2, Copyright (c) 2002-2020, by Derick Rethans[...](4)php.ini有[XDEBUG]xdebug.remote_enable = 1xdebug.remote_autostart = 1xdebug.show_local_vars = 1xdebug.remote_log = "C:\Program Files_\xampp\php\logs\xdebug.log"zend_extension = "php_xdebug-2.9.2-7.4-vc15-x86_64.dll"(請注意“Program Files_”不是受保護的“Program Files”目錄,XAMPP 具有寫訪問權限,如下面的第(9)點所示)(5) Windows 路徑C:\Program Files_\xampp\php;中有(6) 當我在 VSCode 中使用 Code Runner 擴展運行“Hello World.php”腳本時運行良好(7)launch.json對于 VSCode 調試器有"configurations": [    {        "name": "Listen for XDebug",        "type": "php",        "request": "launch",        "port": 9000    },    {        "name": "Launch currently open script",        "type": "php",        "request": "launch",        "program": "${file}",        "cwd": "${fileDirname}",        "port": 9000,    }] (8) 我的 Windows 防火墻有一個入站規則,允許端口 9000 上的 TCP 流量。(9) 當我剛剛運行代碼時,xdebug.log(請參閱php.ini)更新為[94396] Log opened at 2020-03-08 07:45:28[94396] I: Connecting to configured address/port: localhost:9000.[94396] E: Time-out connecting to client (Waited: 200 ms). :-([94396] Log closed at 2020-03-08 07:45:28但是當我使用“調試|開始調試 F5”時,xdebug.log 中沒有任何反應。到目前為止,這就是我認為相關的所有信息。這讓我像這樣:me -> update_status("at wit's end")你們那里的巫師知道在哪里挖嗎?要調整哪個配置文件?要查閱哪個日志文件?腳注:在 VSCode 中調試 Python 腳本的工作與預期一樣。
查看完整描述

3 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

長話短說(如何檢查 VSCode 是否正在偵聽端口 9000)

啟動 XAMPP,啟動 VSCode

打開你的 php 腳本

設置斷點

打開一個 Linux shell(我在 Windows 上的 Ubuntu 上使用 Bash)

在shell中運行telnet 0.0.0.0 9000或telnet localhost 9000觀察連接失敗

root ~ $ telnet localhost 9000 

Trying 127.0.0.1... 

telnet: Unable to connect to remote host: Connection refused 

root ~ $ telnet 0.0.0.0 9000

Trying 0.0.0.0... 

telnet: Unable to connect to remote host: Connection refused

開始調試并看到如上所述的凍結調試彈出窗口

運行telnet 0.0.0.0 9000或telnet localhost 9000在 shell 中運行并注意區別:您已連接到 VScode!

root ~ $ telnet 0.0.0.0 9000 

Trying 0.0.0.0... 

Connected to 0.0.0.0.

Escape character is '^]'.

單擊凍結的調試彈出窗口上的停止按鈕并在外殼中觀察

stop -i 1 Connection closed by foreign host.

root ~ $ 

得出結論,VSCode 確實在監聽 0.0.0.0:9000 和 localhost:9000。


撓頭,回到 VSCode

開始調試

注意底部的橙色狀態欄,上面寫著“Listen to XDebug”

注意菜單欄下方的下拉菜單,上面寫著“綠色箭頭”和“監聽 XDebug”

探索下拉菜單并(重新)發現第二個配置“啟動當前打開的腳本”,意識到/記住您launch.json有 2 個配置

選擇“啟動當前打開的腳本”時單擊綠色箭頭,看到錯誤彈出“listen EARDRINUSE: address already in use :::9000”

取消錯誤提示,點擊調試彈窗的停止按鈕停止調試,注意底部菜單欄變為藍色

當下拉菜單中再次顯示“啟動當前打開的腳本”時單擊綠色箭頭...并注意調試按預期開始

麾!贊揚@LazyOne 的幫助!感謝上天賜予 stackoverflow 社區!

“Listen for XDebug”配置launch.json用于調試從瀏覽器會話啟動的腳本:(i)在 VSCode 中設置斷點,(ii)使用“Listen for XDebug”配置開始調試,(iii)啟動腳本通過在瀏覽器中發起請求,(iv) 觀察 VSCode 是否在處理請求時觸發斷點


短篇故事

當您開始在 VSCode 中調試 php 腳本時,請確保選擇“啟動當前打開的腳本”作為配置,請參見下面的屏幕截圖。

http://img1.sycdn.imooc.com//635399bd0001276207370207.jpg

事后諸葛亮

我已經改變launch.json了


"configurations": [

    {

        "name": "Launch currently open script",

        "type": "php",

        "request": "launch",

        "program": "${file}",

        "cwd": "${fileDirname}",

        "port": 9000

    },

    {

        "name": "Listen for XDebug",

        "type": "php",

        "request": "launch",

        "port": 9000

    }

]

這樣,“啟動當前打開的腳本”是默認設置,當我使用主菜單中的“調試|開始調試 F5”開始調試時將使用該腳本。


查看完整回答
反對 回復 2022-10-22
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

launch.json(默認配置):


{

"version": "0.2.0",

"configurations": [


    {

        "name": "Listen for XDebug",

        "type": "php",

        "request": "launch",

        "port": 9000,

    },

    {

        "name": "Launch currently open script",

        "type": "php",

        "request": "launch",

        "program": "${file}",

        "cwd": "${fileDirname}",

        "port": 9000,

    }


]}

在 php.ini 中包含指令 xdebug.idkey=VSCODE 是絕對必要的,即使我在文檔中沒有找到對它的任何引用。


[xDebug]

zend_extension="c:\xampp\php\ext\php_xdebug-2.9.8-7.3-vc15-x86_64.dll"

xdebug.remote_enable=1

xdebug.remote_autostart=1

xdebug.remote_connect_back=1

xdebug.remote_port=9000

xdebug.idekey=VSCODE


查看完整回答
反對 回復 2022-10-22
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

我剛剛遇到了這個問題,我試圖聽 XDebug,但當我嘗試按 F5 或運行/調試時什么也沒發生......

事實證明,我的工作區中添加了一些幻像文件夾(我一直在使用一些升級工具為我正在處理的應用程序運行一堆測試,所以我猜這就是它的來源?)。

為了能夠再次“運行”調試過程,我需要從工作區中刪除那個“額外”文件夾。希望這可以幫助遇到類似問題的其他人(不像我那樣愚蠢)。


查看完整回答
反對 回復 2022-10-22
  • 3 回答
  • 0 關注
  • 240 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號