Visual Studio 代码 PHP 调试不会在 Docker 项目的断点处停止
Visual Studio Code PHP Debug does not stop on breakpoints for Docker project
我无法让 VS Code 扩展 "Php debug" 在任何断点处停止。我是 运行 我 Ubuntu 笔记本电脑上 Docker 的 php 项目(我想调试)。非常感谢任何建议。
我的设置:
- PHP Docker 上的版本:7.1
- Docker 上的 XDebug 版本:2.6.1
- PHP VS Code 中的调试版本(在我的笔记本电脑上):1.12.6
我的 VS Code launch.json 文件是:
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"log": true,
"pathMappings": {
"/var/www/html": "/home/chris/my-test-debugging-project"
}
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
]
}
我的/usr/local/etc/php/conf.d/xdebug.ini配置是:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host=172.17.0.2
xdebug.remote_log=/var/www/html/xdebug.log
xdebug.remote_connect_back=0
xdebug.remote_port=9000
XDebug 日志文件(来自 php.ini 中的设置 xdebug.remote_log):
Log opened at 2018-10-14 05:47:16
I: Connecting to configured address/port: 172.17.0.2:9000.
W: Creating socket for '172.17.0.2:9000', poll success, but error: Operation now in progress (29).
E: Could not connect to client. :-(
Log closed at 2018-10-
14 05:47:16
PHP 调试日志输出(来自 "log" 中的设置:launch.json 中的 true):
<- launchResponse
Response {
seq: 0,
type: 'response',
request_seq: 2,
command: 'launch',
success: true }
据我所知,9000 是默认使用的 php-fpm 端口。因此,如果您对 xdebug.remote_port=9000
使用相同的端口,它将不起作用。您可以通过 nginx conf 检查是否以我的 cat /etc/nginx/conf.d/site.conf
为例,您可以检查行 fastcgi_pass 127.0.0.1:9000;
或 运行 lsof -n -iTCP:9000 | grep LISTEN
将显示它是否被使用。我建议你
- 将其更改为未使用的内容,例如:10000
xdebug.remote_host
可能出错,登录到容器并尝试 ping 172.17.0.2
如果它不工作你的 xdebug.remote_host
是错误的。找到宿主机的ip替换成当前的172.17.0.2
尝试设置 xdebug.remote_connect_back=1
,如果可行请告诉我。
如果确实如此,我们可能应该将此问题作为问题 的副本来关闭。
我 运行 VM 上的本地 linux Web 服务器。我使用 samba 映射到 Windows 设备字母上,我的 share.I 遵循了所有建议,但断点没有按预期工作。我只能调试添加 "stopOnEntry": true" 到 launch.json,但不能在个人添加的断点上,它们都被忽略了。
我的问题是我的应用所在的路径 运行ning,我这样修复:
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9900,
"log": true,
"stopOnEntry": false,
"pathMappings": {
"/var/www/html/booking" : "z:",
}
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9900
}
]
}
这显然是我的 linux 路径 ->“/var/www/html/booking”
这是驱动器映射字母 -> "z:"
我无法让 VS Code 扩展 "Php debug" 在任何断点处停止。我是 运行 我 Ubuntu 笔记本电脑上 Docker 的 php 项目(我想调试)。非常感谢任何建议。
我的设置:
- PHP Docker 上的版本:7.1
- Docker 上的 XDebug 版本:2.6.1
- PHP VS Code 中的调试版本(在我的笔记本电脑上):1.12.6
我的 VS Code launch.json 文件是:
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"log": true,
"pathMappings": {
"/var/www/html": "/home/chris/my-test-debugging-project"
}
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
]
}
我的/usr/local/etc/php/conf.d/xdebug.ini配置是:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host=172.17.0.2
xdebug.remote_log=/var/www/html/xdebug.log
xdebug.remote_connect_back=0
xdebug.remote_port=9000
XDebug 日志文件(来自 php.ini 中的设置 xdebug.remote_log):
Log opened at 2018-10-14 05:47:16
I: Connecting to configured address/port: 172.17.0.2:9000.
W: Creating socket for '172.17.0.2:9000', poll success, but error: Operation now in progress (29).
E: Could not connect to client. :-(
Log closed at 2018-10-
14 05:47:16
PHP 调试日志输出(来自 "log" 中的设置:launch.json 中的 true):
<- launchResponse
Response {
seq: 0,
type: 'response',
request_seq: 2,
command: 'launch',
success: true }
据我所知,9000 是默认使用的 php-fpm 端口。因此,如果您对 xdebug.remote_port=9000
使用相同的端口,它将不起作用。您可以通过 nginx conf 检查是否以我的 cat /etc/nginx/conf.d/site.conf
为例,您可以检查行 fastcgi_pass 127.0.0.1:9000;
或 运行 lsof -n -iTCP:9000 | grep LISTEN
将显示它是否被使用。我建议你
- 将其更改为未使用的内容,例如:10000
xdebug.remote_host
可能出错,登录到容器并尝试 ping172.17.0.2
如果它不工作你的xdebug.remote_host
是错误的。找到宿主机的ip替换成当前的172.17.0.2
尝试设置 xdebug.remote_connect_back=1
,如果可行请告诉我。
如果确实如此,我们可能应该将此问题作为问题
我 运行 VM 上的本地 linux Web 服务器。我使用 samba 映射到 Windows 设备字母上,我的 share.I 遵循了所有建议,但断点没有按预期工作。我只能调试添加 "stopOnEntry": true" 到 launch.json,但不能在个人添加的断点上,它们都被忽略了。 我的问题是我的应用所在的路径 运行ning,我这样修复:
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9900,
"log": true,
"stopOnEntry": false,
"pathMappings": {
"/var/www/html/booking" : "z:",
}
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9900
}
]
}
这显然是我的 linux 路径 ->“/var/www/html/booking” 这是驱动器映射字母 -> "z:"