我不确定问题出在哪里,它只是行不通。
路由似乎正常工作,我在nginx conf文件中有一个服务器名称。例如test.com。可行。
我的项目位于ubuntu的根目录中,而不是在安装文件夹中。
我不确定还能尝试什么。
xdebug.ini
[XDebug]
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_port=9002
xdebug.remote_handler=dbgp
xdebug.remote_connect_back=0
xdebug.remote_host=soapboxtest.com
xdebug.idekey=VSCODE
xdebug.remote_autostart=1
xdebug.remote_log=/usr/local/etc/php/xdebug.log
launch.json
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9002,
"log": true,
"externalConsole": false,
"pathMappings": {
"/var/www": "${workspaceRoot}"
},
"ignore": [
"**/vendor/**/*.php"
]
},
请求Cookie
"XDEBUG_SESSION" => "VSCODE"
Dockerfile
FROM php:fpm-alpine3.11
...
RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
...
答案 0 :(得分:3)
这也发生在我身上,发现XDEBUG不在寻找Docker Daemon主机。通过添加以下内容进行修复:
"hostname": "0.0.0.0"
作为VS Code上launch.json常规选项的一部分。
答案 1 :(得分:0)
我花了很多天来“扯头发”。
- 在Windows的“开始”菜单中,键入
Firewall
并选择Advanced settings
,然后选择Inbound Rules
- 选择自定义规则。
- 单击“下一步”直到您进入左侧菜单中的
Protocol and Ports
- 选择ICMPv4作为协议类型。
- 选择“下一步”,直到您进入
Name
部分,输入任何名称,然后单击“完成”。如果您现在尝试从wsl2 ping您的主机IP,它应该可以 预期的。
对于wsl2和主机之间的所有其他连接,您都有 允许专用和公用网络的入站规则 不存在手动为相应的UDP / TCP创建规则 端口,但是请注意,如果使用 您的计算机在公共网络中。
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Listen for XDebug", "type": "php", "request": "launch", "port": 9900, "pathMappings": { "/var/www/mywebdir.com":"${workspaceFolder}/MyWebDir", } }, ] }
RUN echo "zend_extension=/usr/lib/php/20190902/xdebug.so\n \ xdebug.remote_enable=on\n \ xdebug.remote_autostart=on \n \ xdebug.remote_connect_back=on\n \ # xdebug.remote_host=$HOST_IP\n \ # xdebug.remote_log_level=9\n \ # xdebug.remote_log=/var/www/mywebdir.com/xdebug.log \n \ xdebug.remote_port=9900" > /etc/php/7.4/mods-available/xdebug.ini;
编辑: 一段时间后,我又开始遇到问题了。试试这些:
在dockerfile中取消注释上面的日志记录行
尝试对您的Windows IP地址(例如192.168.0.x)进行硬编码
(取消注释xdebug.remote_host = ...并注释掉xdebug.remote_autostart = on)
我的xdebug似乎已连接,但之后立即关闭了连接,因为它必须是我的Windows ip。我的理解是,它的VSCode响应Windows中运行的xdebug请求,因此调试数据包需要通过WSL2。
尝试10级日志记录。如果您发现xdebug找不到断点的匹配项,请在docker中检查您的Webroot映射,并在vscode / launch.json中检查pathMappings
检查您是否设置了断点(愚蠢但可以)
答案 2 :(得分:0)
在一位同事帮助我配置 Xdebug 以从 VSCode 侦听 WSL Remote 环境之后,我查找了一个选项,当您单击 IDE 左下角的 WSL Remote 图标时会打开该选项:
远程 WSL:显示日志
它打开一个 WSL 终端,显示(在几个信息之间)WSL 正在使用的 IP 地址。将此 WSL IP 添加到 xdebug.remote_host 值,唯一让 Xdebug 从 Docker 容器、WSL2 环境(来自 WSL 远程 VSCode 扩展)中正确运行的唯一方法是在内部调整应用程序路径launch.json 文件。
为此,在launch.json文件选项卡上用鼠标右键单击,搜索并单击“复制路径”选项,然后将其粘贴到pathMappings设置中,就像这个示例(不要忘记调整路径,删除相对于 launch.json 本身的信息,它适用于您的应用程序路径!):
"pathMappings": {
"/application": "paste here the path you've copied"
}
试试吧,对我来说就像一个魅力。如果它也适用于您,请为我的答案投票!