php - PhpStorm Xdebug、WSL2、Docker // 无法评估表达式 '$_SERVER['SERVER_PORT']'
问题描述
我在一组由 docker-compose 本地编排的 docker 容器中运行 Magento2 PHP 应用程序。我在 WSL2 模式下运行 Docker Desktop for Windows。
我的带有 Xdebug 的 php 7.3 解释器位于其中一个容器中。一旦我在 FPM 上下文中 - 如果我刚刚在 PhpStorm 中激活了远程调试,我就可以很好地调试。
现在我需要调试 CLI 脚本,PhpStorm 显示以下错误:
Cannot evaluate expression '$_SERVER['SERVER_PORT']'
所以 Xdebug 可以清楚地到达 PhpStorm,我在这个 JetBrains 支持论坛、StackOverflow 或其他 Google 上找到的所有提示似乎都不能解决问题。我认为SERVER_PORT
当我们在 CLI 上下文中运行时通常不可用。
我也无法在 PhpStorm 中正确设置 CLI 解释器:
- SSH - 我没有 ssh 服务器,将它添加到容器中只是为了进行 PhpStorm 调试听起来有点矫枉过正
- Docker - 我需要连接到一个正在运行的容器,而不是从映像启动一个新容器(我需要该脚本的持久数据库连接),而且应该在本地执行的实际映像是一个多阶段映像,PhpStorm 没有不支持。
- Docker Compose - 不起作用,我在 Windows 上没有 docker compose,一切都在 WSL“容器”中
- WSL - 不起作用,我的 php 不在 WSL 内部,它更深一层 - 在 WSL 下运行的 Docker 内部。
PHP 7.3.18-1+0~20200515.59+debian10~1.gbp12fa4f (cli) (built: May 15 2020 12:43:10) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.18, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.18-1+0~20200515.59+debian10~1.gbp12fa4f, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.9.6, Copyright (c) 2002-2020, by Derick Rethans
此 Xdebug 配置适用于 FPM 上下文中的调试:
cat xdebug.ini
zend_extension=xdebug.so
xdebug.remote_enable=on
xdebug.remote_autostart=1
; this is IP of windows host that is visible for docker
xdebug.remote_host=172.31.64.1
xdebug.remote_handler=dbgp
如何让 Xdebug 也可以在 CLI 上下文中工作?
解决方案
推荐阅读
- java - 在具有多个参数类型约束的 Kotlin 中调用具有泛型类型的方法
- python - 如何使用 Python 跳过 n 行二进制标准输入?
- .net - 如何创建以特定顺序工作的流畅界面
- python - 将 4D 数组写入 3D 矢量化 2 维
- node.js - 如何使用纱线正确安装 expo-cli?
- spring-data-mongodb - Spring MongoTemplate 不是正在进行的事务的一部分
- php - 无法通过 PHP 但使用 Postman 接收标头信息
- ansible - 如何在 jinja2 中转义双花括号?
- java - 当我尝试将我的应用程序连接到 webServices 时失败
- java - 如何在不清除窗口的情况下在 Swing 中重新绘制?