visual studio代码PHP调试无法正常工作

时间:2017-05-04 12:55:02

标签: php debugging xampp

我已经安装了 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
        }
    ]
}

我做错了什么?

8 个答案:

答案 0 :(得分:9)

刚刚制作:

  1. 我们有操作系统Windows与Microsoft Visual Code ,我们已经安装了 PHP Debug '模块https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug#overview使其工作的步骤已经在这里起作用,但我会再写一遍:

  2. 安装XDebug。在线向导https://xdebug.org/wizard.php可以帮助您,只需在此处发布phpinfo()数据。保存在phpinfo.php中:

    <?php phpinfo(); ?>
    
  3. 然后在浏览器localhost/phpinfo.php中打开,将您看到的所有内容( Ctrl + A 然后 Ctrl + C )复制到向导。它显示了您获取的信息和步骤: enter image description here

    1. 打开显示在说明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
      
    2. 重启Apache2网络服务器。

    3. 此外:

      出于某种原因,我首先让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上的入站连接?我在我的一台开发机器上遇到了这个问题。虽然所有其他设置都是正确的,但我无法达到破发点。一旦我在防火墙中添加了一个例外,它就开始工作了。

因此,如果这是您的设置问题,您有两种方法可以解决它。

  1. 完全关闭防火墙,或至少在您处理项目时暂时关闭防火墙。
  2. 在防火墙设置中添加例外:
    • 转到Windows控制面板,然后键入&#34;防火墙&#34;。
    • 选择&#34;入站规则&#34;从左侧导航栏中,然后点击&#34; New Rule&#34;。
    • 选择&#34; Port&#34;然后点击&#34;下一步&#34;。
    • 确保&#34;特定本地端口&#34;选择选项并键入&#34; 9000&#34;对于端口号。
    • 选择&#34;允许连接&#34;然后点击&#34;下一步&#34;。
    • 检查&#34;域&#34;,&#34;私人&#34;和&#34;公共&#34;然后点击&#34;下一步&#34;。
    • 输入一个描述性名称,例如&#34; XDebug Port&#34;,然后点击&#34;完成&#34;。
    • 重新启动Visual Studio Code,然后再次尝试调试。
  3. 假设您正确配置设置的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 模块

  1. 运行一个调用“phpinfo();”的PHP页面并复制输出内容(是的,您可以选择所有文本和Ctrl+ C) 并粘贴到 https://xdebug.org/wizard

  2. 网站 xdebug.org 会回答您要下载的正确 xdebug 模块版本(例如:php_xdebug-3.0.4-7.4-vc15-x86_64.dll”),还会告诉您如何安装它,在 PHP.ini 中包含的目录和引用。

  3. 启用 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()”的所有可能参数的列表。这个技巧将在您遇到问题时为您提供帮助,您还必须确保“步骤调试器显示为已启用”,它还在与每个主题相关的右侧列中提供链接。

Xdebug settings shown on phpinfo()

因此,在之前的设置中,您可以检查主机和端口是否与您将在 VS Code 上使用的一样。

设置您的 Visual Studio 代码

  1. 使用扩展选项卡,搜索“PHP Debug”并安装它,(值得一提的是,扩展页面上的详细信息也有自己的教程)。 enter image description here

  2. 在 VS Code 菜单 File->Preferences->Settings 上,我为 PHP 可执行文件路径添加了标签: enter image description here

  3. 最后在 VS Code 调试选项卡上,您将被要求创建一个新的 launch.json 文件,只需单击它并选择 PHP。这里的重要步骤是“侦听 Xdebug”项上的“配置”部分,确保端口与您之前在 XDebug 上的 phpinfo() 报告中显示的端口相同。 enter image description here

  4. 确保您的 VS Code 项目文件夹正确并使用“Lister for Xdebug”开始新的调试。 enter image description here

如果出现错误或没有任何反应,请重点检查“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”