【发布时间】:2020-12-04 14:55:39
【问题描述】:
我无法通过以下设置使 PhpStorm 2020.2 与 xdebug 一起工作: WSL2 运行 Ubuntu 20,安装了 PHP 和 php-xdebug。每当我在启用调试的情况下运行测试时,它都会显示“连接未建立。”。
这是 Xdebug 日志显示的内容:
[5877] Log opened at 2020-08-14 17:20:45
[5877] I: Connecting to configured address/port: 172.18.48.1:9006.
[5877] E: Time-out connecting to client (Waited: 200 ms). :-(
[5877] Log closed at 2020-08-14 17:20:46
这仅适用于 CLI,我不尝试通过 php-fpm 进行连接(所以没有 Apache、nginx、...)。
到目前为止我已经尝试过:
-
将端口更改为 9000 以外的端口(端口扫描还显示它们都没有被使用)。
-
添加防火墙规则以允许传入请求,如https://github.com/microsoft/WSL/issues/4585#issuecomment-610061194 中所述(以及在添加规则后重新启动几次)
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow -
将
xdebug.remote_enable=1之类的选项添加到配置中,但无论如何,这是由 PhpStorm 在运行远程 php 实例时完成的(remote_connect_back也没有做到这一点):[wsl://UBUNTU2004]:php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9006 -dxdebug.remote_host=172.18.48.1 /home/spaceemotion/code/xxxxxx/backend/vendor/phpunit/phpunit/phpunit [rest ommitted]
任何帮助将不胜感激!
【问题讨论】:
-
1) 请分享来自
phpinfo()输出的 Xdebug 部分(例如,将它放在你的 test.php 中并尝试调试它)。 2) 也显示来自 PhpStorm 的 Xdebug 相关设置。 3) “无法让 PhpStorm 连接到 Xdebug” 这是 Xdebug 连接到 IDE 而不是其他方式。 4) “remote_connect_back 也没有成功” 没错——该选项在 CLI 中没有任何作用,因为 PHP 根本没有填充$_SERVER(仅适用于 Web 请求)。 5) 问题可能出在 PhpStorm 的 IP 地址检测中。它必须是运行 PhpStorm 的 IP(从 WSL 内部看)。 -
6) 当 IDE 尝试调试会话时(“电话句柄”图标为绿色/IDE 侦听传入连接):仔细检查是否是 PhpStorm 侦听 Xdebug 端口(@987654332@ 或类似) 7) 确保防火墙中允许 PhpStorm(甚至可以尝试在测试期间完全禁用它)。 8) 尝试使用
telnet从 WSL 连接到您的主机操作系统(Windows 10)——如果一切正常(主机:端口正确,防火墙没有问题),它将建立连接(就像 Xdebug 一样)。 -
以防万一:jetbrains.com/help/phpstorm/… & jetbrains.com/help/phpstorm/troubleshooting-php-debugging.html 遗憾的是我自己还没有尝试过 WSL 调试,所以不知道可能需要的任何先决条件(比如允许制作的防火墙规则从 WSL 到主机的连接等)。
-
哎哟。防火墙技巧实际上帮助我找到了问题。 intellij-support.jetbrains.com/hc/en-us/community/posts/… 谈到了与我尝试过的完全不同的防火墙设置对话框。检查了 phpstorm 的复选框,现在它可以工作了!
标签: php phpstorm xdebug windows-subsystem-for-linux wsl-2