Visual Studio代码PHP调试不起作用
Posted
技术标签:
【中文标题】Visual Studio代码PHP调试不起作用【英文标题】:visual studio code PHP debugging not working 【发布时间】:2017-10-02 16:02:46 【问题描述】:我已经安装了 VS Code 和 PHP 调试器。
我正在使用 xampp。
我尝试运行代码 (2) 方式(收听和启动)。
Listen 只是坐在那里,而 Launch 在调试控制台中显示 spawn php ENOENT。
这是我的 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中开启远程调试了吗? 您的问题是什么?对我来说似乎还不清楚。 我不知道如何格式化评论并且达到了 5 分钟的时间限制。 我刚刚用这个和其他信息写了一个公共要点,所以我不会忘记。看看是否有帮助:gist.github.com/MetalFatigue82/850c39a8e1f9d87715c2a62421e40c04 我在这里写了一个完整的指南:cloudways.com/blog/php-debug-with-xdebug 【参考方案1】:您是否检查以确保防火墙允许端口 9000 上的入站连接?我在我的一台开发机器上遇到了这个确切的问题。虽然所有其他设置都是正确的,但我无法达到断点。一旦我在防火墙中添加了一个例外,它就开始工作了。
因此,如果这是您的设置存在的问题,您有两种解决方法。
-
完全关闭防火墙,或至少在您处理项目时暂时关闭。
为您的防火墙设置添加一个例外:
转到 Windows 控制面板并键入“防火墙”。
从左侧导航中选择“入站规则”,然后单击“新建规则”。
选择“端口”,然后点击“下一步”。
确保选中“特定本地端口”选项并输入“9000”作为端口号。
选择“允许连接”,然后点击“下一步”。
检查“域”、“私人”和“公共”,然后点击“下一步”。
输入描述性名称,例如“XDebug Port”,然后点击“完成”。
重新启动 Visual Studio Code,然后再次尝试调试。
假设您正确设置了配置的 Web 服务器部分,这应该允许您进行调试。
希望这会有所帮助。
【讨论】:
【参考方案2】:刚刚成功:
我们有 OS Windows with Microsoft Visual Code 并且我们已经安装了 'PHP Debug' 模块 https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug#overview 使其工作的步骤已经写在这里,但是我再写一遍:
安装 XDebug。在线向导https://xdebug.org/wizard.php 帮助您,只需在此处发布 phpinfo() 数据。在 phpinfo.php 中保存:
<?php phpinfo(); ?>
然后在浏览器中打开localhost/phpinfo.php
,将您看到的所有内容(Ctrl+A 然后Ctrl+C)复制到向导。它显示您获得的信息和要执行的步骤:
打开在指令php.ini中显示(总是有很多php.ini - apache文件夹有一个php.ini,php有php.ini和phpForApache.ini。但是phpinfo使得清楚地显示真正使用的是哪一个)
2.1。并使用 xdebug.remote_enable = 1
和 xdebug.remote_autostart = 1
对其进行配置。我的工作示例:
[XDebug]
zend_extension = "c:\wamp64\bin\php\php7.1.9\ext\php_xdebug-2.6.0beta1-7.1-vc14-x86_64.dll"
xdebug.stopOnEntry = true
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = Off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir ="c:/wamp64/tmp"
xdebug.show_local_vars=0
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_log = "C:\wamp64\tmp\xdebug.txt"
xdebug.remote_port = 9000
xdebug.trace_output_dir = "C:\wamp64\tmp"
xdebug.remote_cookie_expire_time = 36000
重新启动 Apache2 网络服务器。
还有:
出于某种原因,我首先让 xdebug 在 Netbeans 上工作以进行测试,然后我才在手册中找到选项 xdebug.remote_autostart = 1
使其也可以在 VS Code 中工作。
如果您不确定 XDebug 的安装,请查看 phpinfo 页面中的“with Xdebug”字样,并查看 logs/apache_errors.log
中的“加载 php_xdebug 失败”(下载的 DDL 不正确)。然后检查任何其他 IDE。
问候!
【讨论】:
刚刚拯救了我的一天!我想知道为什么 XDebug 的文档和这个答案一样明确 花了一整天的时间,在关注您的评论xdebug.remote_autostart = 1
后终于可以正常工作了
在Ubuntu上测试过,只设置zend_extension
、xdebug.remote_autostart
和xdebug.remote_enable
就够了
我在 phpStorm 文档之后安装了调试,然后我想尝试 Visual Studio Code,但一开始它没有用,但添加 xdebug.remote_autostart=1 也为我解决了这个问题。
这对我有用 - 我的断点没有被停止。我在 MacOS big sur 上运行 VS Code,调试远程 centos 环境。调试在 PHPStorm 中运行良好,而不是在 VSCode 中。我发现我需要更改服务器上的 xdebug.ini(在 /etc/php.d 下),添加 xdebug_remote_autostart
,重新启动 php-fpm 和 BINGO!【参考方案3】:
在您的 lunch.json 文件中添加以下行:
"runtimeExecutable": "c:\\xampp\\php\\php.exe"
"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,
"runtimeExecutable": "C:\\Program Files\\PHP\\v7.3\\php.exe"
]
【讨论】:
“runtimeExecutable”行帮我做了,找了好几个小时! 也为我做了,但仅适用于“启动当前打开的脚本”模式,而不是“监听 XDebug”,所以我无法调试整个应用程序,只是确定了选定的文件: /无论如何都非常有用!【参考方案4】:我已经重新启动了一切,但我仍然没有在断点处停止。 最后,我在 php.ini 中添加了这一行 xdebug.remote_port = "9000" 解决我的问题。
【讨论】:
这是一个常见的。在 XDebug 3.0 中,当 php.ini 中不存在 xdebug.remote_port 条目时使用的默认端口从 9000 更改为 9003,因此如果您相应地配置了您的 launch.json,那么它也会匹配。【参考方案5】:我会使用 NetBeans,因为它们具有更主动的 Xdebug 界面。此外,xdebug V3 有一个不同的端口(端口 9003),因此您应该进行调整。在 netbeans 和其他调试器中会说端口 9000,但现在是 9003
【讨论】:
【参考方案6】:对于今天寻找答案的任何人,我帮助将php.ini
部分 [XDebug] 更改为:
xdebug.mode = debug
xdebug.start_with_request = yes
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.stopOnEntry = true
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = Off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.output_dir ="c:\xampp\tmp"
xdebug.show_local_vars=0
xdebug.remote_handler = "dbgp"
xdebug.client_host = "127.0.0.1"
xdebug.log = "C:\xampp\tmp\xdebug.txt"
xdebug.client_port = 9000
xdebug.remote_cookie_expire_time = 36000
我使用了@Eluny 帖子中的设置,但是对于一些较新版本的 XDebug,属性名称发生了变化。在文档页面上,您可以找到有关 changes
的信息【讨论】:
每个版本的 xdebug 都会更改参数名称,因此您需要查看文档以了解更改 天啊,经过一千次试验。非常感谢【参考方案7】:2021 年刚刚使用 xdebug (v3.x) 完成,一些步骤不同,所以我将引用更多细节:
在你的 PHP 上安装 xdebug 模块
运行调用“phpinfo();”的PHP页面并复制输出内容(是的,您可以选择所有文本和Ctrl+C kbd>) 并粘贴到https://xdebug.org/wizard
xdebug.org 网站会回答你要下载的正确 xdebug 模块版本(例如:php_xdebug-3.0.4-7.4-vc15-x86_64.dll"),它还会告诉你如何安装它,在哪个目录以及包含在 PHP.ini 中的引用。
Enable xdebug settings to debug mode and enable the remote step debugger on PHP.ini as the following example, I have used
[XDebug] xdebug.mode=debug xdebug.remote_enable=on xdebug.start_with_request=yes zend_extension = C:\xampp\php\ext\php_xdebug-3.0.4-7.4-vc15-x86_64.dll
您可能需要根据您的情况更改这些 xdebug 设置(例如使用另一个客户端端口),您可以看到运行“phpinfo()”的所有可能参数的列表。此技巧将在您遇到问题时为您提供帮助,您还必须确保“步骤调试器显示为已启用”,它还在与每个主题相关的正确列上提供链接。
因此,在之前的设置中,您可以检查主机和端口是否符合您在 VS 代码上使用的预期。
设置您的 Visual Studio 代码
使用扩展选项卡,搜索“PHP Debug”并安装它,(值得一提的是,扩展页面上的详细信息也有它自己的教程)。
在 VS Code 菜单 File->Preferences->Settings 中,我为我的 PHP 可执行路径添加了标签:
最后在 VS Code 调试选项卡上,您将被要求创建一个新的 launch.json 文件,只需单击它并选择 PHP。这里重要的一步是“Listen for Xdebug”项上的“配置”部分,确保端口与您之前在 XDebug 上的 phpinfo() 报告中显示的端口相同。
确保您的 VS Code 项目文件夹正确并使用“Lister for Xdebug”开始新的调试。
如果出现错误或什么都没发生,请重点检查“phpinfo()”上显示的 XDebug 设置,以及“Listen for XDebug”部分的“launch.json”或检查网络服务器 error.log 是否有可能的错误详情。
最好的问候!
【讨论】:
【参考方案8】:在新版本的XDebug 3.0.X 中,XDebug 的一些参数发生了变化。如果您的客户端端口为 9000,您还需要在 php.ini 文件中设置xdebug.client_port = 9000
。在 Visual Studio Code 中打开您的 PHP 项目,然后单击 Run -> Add Configuration
并将端口更改为 9000。现在您可以使用选项“Listen for XDebug”
【讨论】:
【参考方案9】:我遇到了类似的问题(没有错误没有输出)。后来我注意到如果我创建新文件夹它可以工作,在我的情况下它是隐藏文件。创建新文件夹并将源文件移动到新文件夹可能会解决问题。
【讨论】:
【参考方案10】:您只需在 php.ini 文件中进行这些更改。 Xdebug v3.x.x : (注意此版本的端口号已改为9003)。
[XDebug] xdebug.mode = 调试 xdebug.start_with_request = 是
对于 Xdebug v2.x.x:
[XDebug] xdebug.remote_enable = 1 xdebug.remote_autostart = 1 xdebug.remote_port = 9000
【讨论】:
以上是关于Visual Studio代码PHP调试不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用 Visual Studio Code 进行调试不起作用
Visual Studio 2015 RTM - 调试不起作用
Visual Studio Code 上的 vuejs3 调试不起作用
调试模式在 Visual Studio 2015 中不起作用
使用以前版本的 Visual Studio 的 devenv 从 VS2017 测试 Visual Studio 扩展不起作用