我已经从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版本,但是仍然无法正常工作。
我点击了以下链接:
这些解决方案均无效。
答案 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)。
对于任何因此错误而困扰的人,这是我的配置:
1)httpd.conf
2)php.ini(XDebug部分)
3)launch.json(VS代码配置)
答案 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 中重新运行您的调试,应该可以正常工作。 祝你在打虫战中一切顺利!