带有 PhpStorm 和 Xdebug 的 Minikube

Minikube with PhpStorm and Xdebug

我开发了一个基于 PHP 的应用程序。这个应用程序实际上在 Kubernetes 中运行,主要在我的机器上使用 minikube。我将 PhpStorm 用作 IDE,我还使用 Xdebug 进行调试。

我从研究中了解到,当您使用 Xdebug 启动 PhpStorm 时,它将开始侦听端口(默认为 9000)。当我连接到我的容器(在 minikube 中)时,我可以使用 netcat 到达端口 9000 的 IDE :

nc <my_ip_adress> 9000

这向我显示一条消息,告诉我连接已打开,因此我可以从我的容器访问 IDE。

然后,当我尝试使用 Xdebug 时,它不起作用并且 Xdebug 不会在断点处停止。我猜 IDE 也应该到达容器,那部分我不确定,我不知道该怎么做..

有人已经使用 minikube 和 PhpStorm / Xdebug 设置了这种配置吗?

如果您尝试调试其中包含 xdebug_info() 的脚本,它会准确告诉您 Xdebug 试图做什么,如果有的话。

您还可以通过设置 xdebug.log=/tmp/xdebug.logxdebug.log_level=10 来创建一个日志文件,然后这个日志文件将更详细地显示发生的事情。

请注意,虽然可以打开连接,但您可能没有正确的进程。端口 9000 也被 PHP-FPM 使用,这就是 Xdebug 3 现在默认使用 9003 的原因。

要使 xdebug 工作,它只需要连接到客户端主机。也不需要客户端(在本例中为 phpstorm)连接到您的 pods。

我对 mac 使用 docker 进行了相同的设置。我做了什么让它起作用:

  1. 更改了xdebug.client_host configuration to host.docker.internal,在minikube/etc/host中自动定义,可以访问主机machine资源
  2. 确保我在 php.ini xdebug.idekey
  3. 中定义了正确的 xdebug 密钥
  4. 确保我使用 xdebug helper extension 并在那里定义了相同的 idekey
  5. 确保我使用 9003 在 phpstorm 中监听,这是 default port for xdebug 3