【发布时间】:2021-07-03 11:30:27
【问题描述】:
我正在尝试将我最近的 XAMPP 开发设置转换为基于 WSL2 的 LAMP 堆栈。
到目前为止,我已经成功了。我可以通过https://localhost/test.php 访问包含<?php phpinfo(); 的测试页test.php(出于开发目的使用自签名证书。)
遗憾的是,我完全无法让 Xdebug 正常工作。
Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(
我已经通过这些线程,但无济于事:
我的设置:
- 安装了 WSL2 的 Windows 10
- Ubuntu 20.04 和 Apache2
- PHP 8.0.5 和 Xdebug 3.0.4
- PhpStorm (IDE)
我在/etc/php/8.0/apache2/php.ini 的 Xdebug 设置:
[xdebug]
xdebug.mode=debug
xdebug.remote_port=9003
xdebug.client_port=9003
xdebug.start_with_request=yes
xdebug.remote_host=localhost
xdebug.idekey=PHPSTORM
xdebug.discover_client_host=1
;xdebug.client_host=localhost
;xdebug.remote_enable=1
;xdebug.remote_handler=dbgp
我尝试评论“discover_client”并将客户端主机显式设置为 localhost。没有变化。
phpinfo() 的输出似乎表明这些设置没有被忽略。见screenshot of the relevant parts。
/etc/apache2/sites-available/default-ssl.conf中虚拟主机的相关设置为:
<VirtualHost: *:443>
ServerName localhost
DocumentRoot "/mnt/d/projects/testproject/public"
<Directory "/mnt/d/projects/testproject/public/">
Options +Indexes +Includes +FollowSymlinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
(“全部授予”仅在调试时是暂时的)
我不知道这是否相关,但我确保 C:\Windows\System32\drivers\etc\hosts 包含
127.0.0.1 localhost
::1 localhost
所以当我跑步时
php -dxdebug.mode=debug /mnt/d/projects/testproject/public/test.php
我明白了
Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(
有人看到问题了吗?或者谁能给我一个提示,让我知道下一步该去哪里?
【问题讨论】:
-
您是否也在 WSL2 下运行 xdebug 客户端?您使用的是哪个 xdebug 客户端?你在哪里运行你的 xdebug 客户端? / 也许这有帮助? superuser.com/q/1586386/63279
-
感谢您对此进行调查!我并不真正了解 xdebug 本身的客户端/服务器结构,我一直很幸运,一切正常。我检查了 xdebug.org 并下载了 Simple DBGp 客户端 0.4.2 并在我的 test.php 上运行它。我得到“等待调试服务器连接端口 9003”,当我在浏览器中访问“localhost/test.php”时,我的终端在浏览器等待时显示连接。所以至少有些东西。
-
酷,所以实际上,当你说“它刚刚工作”时,你当时用的是什么?您可能没有将其称为客户端,而是其他名称(当时充当调试客户端),例如 editor、debugger、IDE。哪一个?我猜你想继续使用那个,对吧?
-
是的,我正在使用 PhpStorm。我正在使用验证工具,它是最初抛出错误的工具。验证脚本只是创建一些文件“_intellij_php_validator.php”并尝试使用 CLI 运行它。我试图隔离问题并直接在我的终端中运行相同的命令。
-
@friddle:请查看 PhpStorm 文档是否支持 WSL2 进行调试(并直接执行 PHP)。在任何情况下,xdebug 都需要从 WSL2 (Linux) 连接到 Phpstorm (Windows),反之亦然。 Phpstorm 通常会等待连接进来,因此 WSL2 中的 xdebug 需要知道要连接到哪个地址(IP 地址)。我这里没有用于测试的 WSL2,但总而言之,它应该只是网络,您使用简单的 dbgp 客户端进行的测试已经表明它基本上可以工作。
标签: php apache2 xdebug windows-subsystem-for-linux