我想将VSCode的'PHP Debug'插件与Xdebug一起使用来调试PHP脚本。
但是当我选择“ Debug | Start Debugging F5”时,会出现一个小的调试弹出窗口,我被卡住了。暂停,重新启动,停止按钮处于活动状态。移入,移出,移出按钮无效(变灰)。在调试控制台中什么也没有发生。
已安装((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 = 1
xdebug.remote_autostart = 1
xdebug.show_local_vars = 1
xdebug.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)VSCode调试器的launch.json
具有
"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
但是当我使用“ Debug | Start Debugging F5”时,xdebug.log中什么也没有发生。
这是到目前为止我认为相关的所有信息。这让我像这样:
me -> update_status("at wit's end")
您在这里的巫师有什么想法可以挖掘吗?要调整哪个配置文件?要查询哪个日志文件?
脚注:在VSCode中调试Python脚本的工作符合预期。
@@ LazyOne的评论提供了偶然发现解决方案的线索和工具...
答案原来很尴尬。
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
并注意区别:您已连接到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。
launch.json
具有2个配置launch.json
中的“ Listen for XDebug”用于调试从浏览器会话启动的脚本:(i)在VSCode中设置断点,(ii)使用“ Listen for XDebug”配置开始调试,( iii)通过在浏览器中发起请求来启动脚本,(iv)如果在处理请求时触发了断点,则观察VSCode请确保在开始使用VSCode调试php脚本时选择“启动当前打开的脚本”作为配置,请参见下面的屏幕截图。
我将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”开始调试时,将使用该方法。