将 Xdebug 与 PhpStorm 和 WSL 一起使用

Posted

技术标签:

【中文标题】将 Xdebug 与 PhpStorm 和 WSL 一起使用【英文标题】:Use Xdebug with PhpStorm and WSL 【发布时间】:2018-12-19 18:12:28 【问题描述】:

我使用来自 Windows 10 的 WSL (Ubuntu 16.14) 作为具有 php 7.1 fpm 和 Apache 的 Web 服务器。

我想将 PhpStorm 2018 中的 Xdebug 与 WSL 一起使用,但效果不佳。

Xdebug 安装在我的 Ubuntu 服务器上并且运行良好,我在 phpinfo() 输出中看到了它。

这里是 Xdebug 的 php.ini 配置:

[Xdebug]
zend_extension="/usr/lib/php/20170718/xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_connect_back=On
xdebug.remote_host=127.0.0.1
xdebug.remote_port = 9001
xdebug.idekey = PHPSTORM

我在phpstorm中也配置了端口为9001。

问题更多在于 PhpStorm 和 WSL 之间的连接。我尝试使用远程方式。在Run > Edit config 弹出窗口中,我使用 PHP 网页,当我使用验证工具时,除了远程主机之外一切正常。 我将它设置为 127.0.0.1,这就是重点。

听调试工具提示:9001端口忙

如何在 localhost 和 localhost 之间建立链接?

【问题讨论】:

配置应该可以工作。我没有用 PhpStorm 尝试过,但它适用于我使用 VS/Code 和主机条目。这是一个指南。 blog.devsense.com/en/2018/04/wsl 检查某些进程是否已经在监听 9001。在某些发行版上,xdebug 和 php-fpm 端口是相同的,直接导致您的情况。 确实,PhpStorm 似乎无法监听端口,因为另一个应用程序已经占用了它。 9001 是 php-fpm 的默认端口? 默认的 FPM 端口是 9000。 【参考方案1】:

我正在使用 Windows 10 中的 WSL(Ubuntu 20.04 LTS)作为具有 PHP 7.4 fpm 的 Web 服务器和具有 Xdebug 版本 3.0.4 的 Apache

以下是在 PHPSTORM 中配置 Xdebugger 的步骤,它适用于我:

    安装 Xdebug

    在 cli 解释器中选择 wsl

    要获取 client_host,请在 ubuntu 中运行 ifconfig 或在 bash 中运行 ipconfig

    打开下面的文件

sudo vi /etc/php/7.4/cli/conf.d/20-xdebug.ini

在上面的文件中添加以下内容

zend_extension=xdebug.so
xdebug.mode=debug
xdebug.client_host=[ip4 address/Client_host]
xdebug.remote_connect_back=On
xdebug.client_port="9003"
xdebug.remote_handler=dbgp
xdebug.start_with_request=yes
xdebug.remote_log=/tmp/xdebug.log

    然后使用 Xdebugger chrome 扩展(xdebugger helper)

    重启apache服务器。

    给文件添加断点并刷新页面

【讨论】:

以上是关于将 Xdebug 与 PhpStorm 和 WSL 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何将PhpStorm与Xdebug连接

如何使用 phpstorm 和 Xdebug 设置远程调试

phpstorm —— Xdebug 的配置和使用

PHPStorm 无法与 xdebug 建立外部连接

PhpStorm中如何使用Xdebug工具,入门级操作方法

Xdebug在调试时候(PHPStorm) 中文乱码