【发布时间】:2019-05-16 02:48:04
【问题描述】:
我有一个本地 ddev(基于 docker)PHP Drupal 7 开发环境设置。我已经使用 Behat Drupal Extension 为本网站设置了 Behat 测试。
所有 Behat 上下文文件和相关的 Composer 供应商文件夹都位于站点 Web 根目录之外的测试文件夹中。文件夹结构类似于:
-
项目
测试
public_html
我已启用 xdebug 并使用 PhpStorm。我已经设置了一个 PhpStorm 调试服务器并提供了正确的路径映射。
通过浏览器调试 php 代码效果很好,调试 CLI 命令效果很好。当我在通过 CLI 运行 Behat 测试时尝试调试所有代码时,就会出现我的问题。
在 PhpStorm PHP 服务器配置中,如果我只为 testing 文件夹设置路径映射,我可以调试测试文件夹中的任何代码,并且不会出现 curl 问题。我显然无法调试public_html 文件夹中的代码,因为我没有设置路径映射。当我为testing 和public_html 文件夹设置路径映射时,我可以调试所有代码,但任何包含对站点本地URL 的Mink curl_exec() 调用的行为步骤定义都会挂起3 到10分钟!
我的目标...
能够在运行 Behat 测试时调试 testing 和 public_html 文件夹中的所有 php 代码,而不会挂起 curl_exec()。
我尝试过的...
我将 PhpStorm Debug Max Simultaneous Connections 设置为 10,并尝试了 20。
这是我的 xdebug 远程配置设置:
xdebug.remote_addr_header => no value => no value
xdebug.remote_autostart => On => On
xdebug.remote_connect_back => Off => Off
xdebug.remote_cookie_expire_time => 3600 => 3600
xdebug.remote_enable => On => On
xdebug.remote_handler => dbgp => dbgp
xdebug.remote_host => host.docker.internal => host.docker.internal
xdebug.remote_log => no value => no value
xdebug.remote_mode => req => req
xdebug.remote_port => 9000 => 9000
以下所有都导致 curl 挂起:
- 设置
xdebug.remote_autostart=0并通过使用我的 behat 命令传入XDEBUG_CONFIG=idekey=PHPSTORM环境变量来启动 Xdebug 会话- 不通过 curl 调用传递任何 cookie 或 GET 参数。
- 通过 curl 调用传递相同的 idekey 作为 cookie 和 GET 参数
- 通过 curl 调用将不同的 idekey 作为 cookie 和 GET 参数传递
非常感谢任何帮助!
【问题讨论】:
-
收集 Xdebug 日志,它可能会说明发生了什么(如果它尝试连接以及在哪里连接)。
xdebug.remote_log -
只有当您尝试从同一个应用程序访问 URL 时才会发生这种情况?
-
感谢@LazyOne 和 NicoHaase 的建议。是的,仅当来自同一应用程序的 URL 时才会出现此问题。我收集了 Xdebug 日志,他们发现正在建立连接并卡在运行命令上。这让我认为是 PhpStorm 特定的东西或网站没有响应导致了问题。我在下面的答案中有更多详细信息。再次感谢!
标签: php docker phpstorm xdebug ddev