【问题标题】:PhpStorm runs debugging in CLI mode instead of remote modePhpStorm 在 CLI 模式而不是远程模式下运行调试
【发布时间】:2017-09-20 08:45:29
【问题描述】:

我遇到了以下问题。当我尝试在 PhpStorm 中运行调试时,它似乎以非常任意的模式启动调试会话。显然我做错了,但有时它以远程模式启动 - 我可以访问服务器全局变量,但大部分时间它以 CLI 模式启动 - 所以我也假设我的远程调试配置没问题。

我正在使用此页面中的标记:https://www.jetbrains.com/phpstorm/marklets/

以下是我遵循的步骤:

  1. 我点击“开始监听连接...”
  2. 然后我点击保存 marklet 的“启动调试器”书签并检查是否设置了 cookie,并且它实际上已设置并且具有与我在远程调试配置中设置的相同的 IDE id 值。
  3. 然后我点击书签中的“调试此页面”标记或直接重新加载页面。
  4. 最后我点击了 PhpStorm 中的调试按钮。

然后正如我所说 - 它有时以 CLI 模式启动,有时以远程模式启动。

我认为解决问题的关键是顶部条带上运行/调试按钮左侧的下拉列表 - 我只能在“编辑配置”和“index.php”之间进行选择,图标看起来像与“编辑配置”窗口中的“PHP 脚本”图标相同。

我还在调试面板的顶部打开了几个选项卡,但所有选项卡也都有用于脚本模式的图标建议...

如何明确设置我要使用远程调试? 我正在使用 PhpStorm 2017.1

【问题讨论】:

  • 1) 如果您使用的是小书签(或 xdebug 浏览器扩展),那么您不需要执行 #4 .. 因为它执行当前选择的运行/调试配置 ..它可能是在 CLI 模式下运行 PHP 的“PHP 脚本”类型。 2) 在#3 中——你不能只是“重新加载页面”.. 除非之前已经设置了 xdebug cookie。这种情况下就好了。 3) 如果您想使用 IDE 中的调试按钮 .. 那么您不需要小书签等(不需要 #1、#2 和 #3) - 您只需创建运行/调试配置正确的类型(例如“PHP Web App”),在下拉框中选择它并点击调试。
  • 以防万一(有视频等):confluence.jetbrains.com/display/PhpStorm/…。在 YouTube 上搜索“xdebug phpstorm”也会带来不少有用的视频。

标签: php debugging phpstorm xdebug


【解决方案1】:

如果你想在网页上调试 PHP,你唯一需要做的就是开始监听远程连接。为此,请通过 ssh 连接到远程主机,并转发 9000 端口(假设您的 PHPStorm 正在侦听此端口):ssh -R 9000:localhost:9000 <remote_host>。 我相信 Xdebug 正在服务器上运行。 如果您不是远程主机的管理员,您可以通过在 .htaccess 文件中设置以下变量来确保设置:

php_flag display_errors 1
php_flag  xdebug.remote_enable on
php_value xdebug.remote_host 127.0.0.1
php_value xdebug.remote_port 9000

至于 marklets,您可以尝试市场上流行的浏览器的免费扩展之一(即 Xdebug 助手)

如果你想在远程主机上调试 CLI 脚本,并且你不确定它是否全部配置好,除了转发端口你不能尝试使用以下 php 脚本参数进行调试:

php -dzend_extension=<path_to_xdebug_on_server, i.e /var/lib/apache2/modules/xdebug.so> -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_connect_back=0 -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_autostart=On -dxdebug.idekey=<your_ide_key> <script i.e. index.php>

【讨论】:

  • PhpStorm 支持远程 PHP 解释器,因此通过 SSH 调试 CLI 脚本是“PHP 脚本”类型的运行/调试配置的一部分(将根据当前活动的 PHP 解释器使用正确的模式——无论它是本地的或远程的)。 P.S. 我相信“远程” OP 的意思是“调试网页”,而不是 CLI——就像他没有提到任何远程服务器等一样简单。
  • PS 确实支持远程 PHP 解释器,并且可以通过 @LazyOne 的配置运行脚本,但我可以提一下,如果参数确实经常更改,并且如果您想从所有 shell CLI 功能中受益,手动调用脚本可能很有用,为此您需要添加上述参数。
  • 我也相信我可能被理解为网页调试和CLI已经运行时配置的脚本被意外设置在调试按钮旁边,但我想通过以下方式完成我的回答也考虑到这种可能性
猜你喜欢
  • 2020-10-31
  • 2021-10-30
  • 1970-01-01
  • 2021-12-07
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多