Visual Studio Code不会在PHP Xdebug

时间:2018-10-27 12:02:44

标签: php visual-studio-code xdebug

我已经从Thinkpad笔记本电脑转移到HP Elitebook。我必须在新笔记本电脑中设置开发环境。在Windows 10 Pro 64位版本中设置Visual Studio Code和XAMPP后,我无法调试PHP代码。

我已经为Visual Studio Code正确安装了Xdebug扩展,并确保php.ini正确。这是我对php.ini的设置(我使用放在E:驱动器上的便携式XAMPP):

zend_extension = "E:\xampp\php\ext\php_xdebug-2.4.1-5.4-vc9.dll"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_log="E:\xampp\apache\logs\xdebug.log"

我的xdebug.log显示如下信息:

Log opened at 2018-10-27 05:56:45
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///E:/xampp/htdocs/absen/index.php" language="PHP" xdebug:language_version="5.4.3-dev" protocol_version="1.0" appid="7112" idekey="william"><engine version="2.4.1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2016 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

Log closed at 2018-10-27 05:56:45

但是我的Visual Studio Code不会在断点处停止。

我已经重新安装了Visual Studio Code,XAMPP,并使用了另一个Xdebug版本,但是仍然无法正常工作。

我点击了以下链接:

这些解决方案均无效。

8 个答案:

答案 0 :(得分:7)

最后,我知道问题的根源。 HP Elitebook预先安装了名为HP Velocity的程序,该程序使用端口9000。

问题是我的主机上的端口9000绑定到了HP Velocity软件的端口9000。当HP Velocity服务连接到localhost xdebug服务器时,日志显示连接正常,但已连接到HP Velocity。

我在php.ini中将xdebug端口更改为9090,并在visual studio代码上将launch.json更改。之后,我的Visual Studio代码照常工作,并且可以在断点处停止。

希望这对其他人有帮助:)

答案 1 :(得分:3)

在我的情况下,我试图在本地计算机上调试php脚本,所以我必须意识到必须使用Web服务器使用的端口(在我的情况下为8080)调试php脚本。使用VS Code配置上设置的端口(我使用9090)。

对于任何因此错误而困扰的人,这是我的配置:

  • 操作系统:Windows 10 64位
  • PHP 5.6(32位TS)
  • Xdebug 2.5.5(32位)
  • Apache 2.4(32位)
  • 在Google Chrome浏览器上安装的Xdebug Helper

1)httpd.conf

Apache Port

2)php.ini(XDebug部分)

XDebug Port

3)launch.json(VS代码配置)

enter image description here

答案 2 :(得分:3)

这就是解决我遇到的相同问题的方法,如果以前的答案没有帮助,值得一试

php.ini

 [XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug-3.0.2-8.0-vs16-x86_64.dll"
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 9000
xdebug.client_host = "127.0.0.1"
xdebug.log = "C:\xampp\tmp\xdebug\xdebug.log"
xdebug.idekey = VSCODE

launch.json

"configurations": [
    {
      "name": "Listen for XDebug",
      "type": "php",
      "request": "launch",
      "port": 9000
    },
    {
      "type": "php",
      "request": "launch",
      "name": "Run using local PHP Interpreter",
      "program": "${file}",
      "runtimeExecutable": "C:\\xampp\\php\\php.exe"
    }
  ]

答案 3 :(得分:2)

对于我来说,pathMappings是错误的,并且没有更改端口

{
    ...
    "configurations": [
        {
            ...
            "port": 9000,
            "pathMappings": {
                "/var/www/yourproject": "${workspaceFolder}/",
             }
          }
      ]
  }

如果我检查“一切”断点,则我的断点实际上是有效的 (它捕获了一个抑制的异常,但是VS代码警告未找到该文件)

答案 4 :(得分:1)

原因可能是php xdebug的端口引起的。当我这样做时,它对我来说很好:

1。使用php --ini显示php配置文件并将xdebug端口更改为9900: xdebug.remote_port=9900 然后重启你的PHP

2。打开vscode并将端口更改为launch.json中的相同编号: "port": 9900

3。享受调试效果

答案 5 :(得分:1)

我遇到了同样的问题,但是在ubuntu中将端口更改为8000后,它对我有用。

答案 6 :(得分:1)

我是一名新手程序员,所以听起来可能有些愚蠢,但对像我这样的PHP和Web服务器新手来说可能会有所帮助。

我在Xdebug跳过断点时遇到了同样的问题。对我而言,事实证明我在“回声”语句上有一个断点。显然,这不是使用断点的有效行。一旦将断点移至变量声明,它便开始工作。

答案 7 :(得分:0)

请注意,如果您使用的是 Xdebug 3.xx 版,您需要执行以下操作:

停止Apache服务器,然后在php.ini文件末尾添加:

[XDebug]
xdebug.mode = debug
zend_extension="C:\xampp\php\ext\php_xdebug.dll"

之后,再次启动Apache服务器。

请注意,添加 xdebug.start_with_request = yes 会告诉 xdebug 为每个请求初始化与 IDE 的通信,即使您可能没有调试,这会在您的 IDE 控制台状态中发出警告:

[Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(

最好使用 chrome 扩展程序在浏览器中使用 cookie 来触发 xdebug 的激活。有关详细信息,请参阅 https://xdebug.org/docs/step_debug#browser-extensions

在 vscode 中转到顶部菜单中的 Run,然后 Add configuration,这将打开 launch.json,在 configurations 下添加:

{
    "name": "Listen for Xdebug",
    "type": "php",
    "request": "launch",
    "port": 9003
},

请注意端口 9003 与您的应用程序端口不同。我正在使用 php artisan serve 运行我的 Laravel 应用程序,端口为 8000,并且在我启动时 xdebug 是 9003

在 vscode 中重新运行您的调试,应该可以正常工作。 祝你在打虫战中一切顺利!