我已经安装了 VS Code 和 PHP调试器。
我正在使用xampp。
我尝试运行代码(2)方式(监听和启动)。
听只是坐在那里,而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
}
]
}
我做错了什么?
答案 0 :(得分:9)
刚刚制作:
我们有操作系统Windows与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的安装,请使用Xdebug&#34;检查phpinfo页面的&#34;单词和检查logs/apache_errors.log
for&#34;加载php_xdebug&#34; (下载的DDL不正确)。然后检查任何其他IDE。
很高兴!
答案 1 :(得分:1)
在Lunch.json文件中添加以下行:
“ runtimeExecutable”:“ c:\ xampp \ php \ php.exe”
答案 2 :(得分:0)
您是否检查过以确保防火墙允许端口9000上的入站连接?我在我的一台开发机器上遇到了这个问题。虽然所有其他设置都是正确的,但我无法达到破发点。一旦我在防火墙中添加了一个例外,它就开始工作了。
因此,如果这是您的设置问题,您有两种方法可以解决它。
假设您正确配置设置的Web服务器部分,则应该允许您进行调试。
希望这会有所帮助。
答案 3 :(得分:0)
我已经重新启动了所有功能,但我仍然没有在断点处停下来。 最后,我在php.ini中添加了这一行 xdebug.remote_port =“ 9000” 解决我的问题。
答案 4 :(得分:0)
我将使用NetBeans,因为它们具有更主动的Xdebug接口。另外,xdebug V3具有不同的端口(端口9003),因此您应该进行调整。在netbeans和其他调试器中,端口将为9000,但现在为9003
答案 5 :(得分:0)
对于今天希望得到答案的任何人,对我来说,在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
的信息答案 6 :(得分:0)
刚刚在 2021 年使用 xdebug (v3.x) 完成,有些步骤不同,所以我将引用更多细节:
在 PHP 上安装 xdebug 模块
运行一个调用“phpinfo();”的PHP页面并复制输出内容(是的,您可以选择所有文本和Ctrl+ C) 并粘贴到 https://xdebug.org/wizard
网站 xdebug.org 会回答您要下载的正确 xdebug 模块版本(例如:php_xdebug-3.0.4-7.4-vc15-x86_64.dll”),还会告诉您如何安装它,在 PHP.ini 中包含的目录和引用。
启用 xdebug 设置为调试模式并在 PHP.ini 上启用远程单步调试器作为我使用的以下示例
[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 Code 上使用的一样。
设置您的 Visual Studio 代码
在 VS Code 菜单 File->Preferences->Settings 上,我为 PHP 可执行文件路径添加了标签:
最后在 VS Code 调试选项卡上,您将被要求创建一个新的 launch.json 文件,只需单击它并选择 PHP。这里的重要步骤是“侦听 Xdebug”项上的“配置”部分,确保端口与您之前在 XDebug 上的 phpinfo() 报告中显示的端口相同。
如果出现错误或没有任何反应,请重点检查“phpinfo()”中显示的 XDebug 设置,以及“侦听 XDebug”部分中的“launch.json”或检查网络服务器 error.log 以了解可能的错误详情。
最好的问候!
答案 7 :(得分:0)
在新版本的 XDebug 3.0.X 中,XDebug 的一些参数发生了变化。如果您的客户端端口为 9000,您还需要在 php.ini 文件中设置 xdebug.client_port = 9000
。在 Visual Studio Code 中打开您的 PHP 项目,然后单击 Run -> Add Configuration
并将端口更改为 9000。现在您可以使用选项“侦听 XDebug”