【问题标题】:Remote debugging via SSH tunnel: receiving "There was a problem sending x bytes on socket y: Broken pipe"通过 SSH 隧道进行远程调试:接收“在套接字 y 上发送 x 字节时出现问题:管道损坏”
【发布时间】:2019-04-25 08:04:17
【问题描述】:

这个想法是设置“通过 SSH 隧道进行远程调试”。更详细地说:我们在本地的 Windows PC 上运行 PhpStorm。在远程 Centos 服务器上运行 Xdebug。我们使用 SSH 隧道选项通过 Putty 进行连接。

我们遵循以下指南: https://www.jetbrains.com/help/phpstorm/remote-debugging-via-ssh-tunnel.html

问题是,如果我们在远程服务器上使用XDEBUG_CONFIG=idekey=phpstorm php myscriptcommand.php 启动 CLI 调试,我们会在 ssh 屏幕中收到如下错误 xxxx.xx: There was a problem sending 318 bytes on socket 4: Broken pipe

Netstat 向我们展示了

prompt on server$ netstat -a -n | grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN
tcp        0      1 remote_server_ip:47160     66.249.79.197:9000      SYN_SENT

问题:我们如何才能防止发生破裂的管道或这里出了什么问题?

【问题讨论】:

  • 不是 SSH 专家,所以这里可能是完全错误的 .. 但是尝试为所有 Xdebug 通信使用不同的端口(例如 9001),以防它与您可能已经安装在那里的 php-fpm 冲突(因为它默认使用 9000)。
  • 就是这样,我会通过它作为答案

标签: ssh phpstorm ssh-tunnel


【解决方案1】:

通过将默认端口更改为空闲端口来解决此问题,在本例中为 9001。php fpm 在端口 9000 上运行。

xdebug 的端口(putty/ssh 隧道和 phpstorm 中的端口都需要更新为 port:9001(或其他空闲端口)

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题,发现xdebug已经启动了默认的远程调试。

    而且我的Phpstorm也开启了,xdebug的DBGP协议在接收数据的过程中被阻塞了

    xdebug.remote_autostart=1

    我将过程记录到我的博客:https://tkstorm.com/posts-list/programming/php/xdebug-timeout-question/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 2010-12-25
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      相关资源
      最近更新 更多