使用PHPStorm和x2B调试远程(DigitalOcean)Lando站点(drupal8配方);Xdebug

使用PHPStorm和x2B调试远程(DigitalOcean)Lando站点(drupal8配方);Xdebug,xdebug,digital-ocean,drupal-8,lando,Xdebug,Digital Ocean,Drupal 8,Lando,我正在尝试远程运行Lando,以避免消耗本地资源。有时我需要在笔记本电脑上工作,而lando+xdebug是一只饥饿的野兽 本地 name: XXXXXX recipe: drupal8 config: php: 7.1 webroot: ./docroot xdebug: false // overridden later services: appserver: build: - composer install ruby: type: rub

我正在尝试远程运行Lando,以避免消耗本地资源。有时我需要在笔记本电脑上工作,而lando+xdebug是一只饥饿的野兽

本地

name: XXXXXX
recipe: drupal8
config:
  php: 7.1
  webroot: ./docroot
  xdebug: false // overridden later
services:
  appserver:
    build:
      - composer install
  ruby:
    type: ruby:2.4
    run:
      - "cd $LANDO_MOUNT && gem install compass"
tooling:
  blt:
    service: appserver
    cmd: /app/vendor/acquia/blt/bin/blt
  gem:
    service: ruby
  compass:
    service: ruby
  fix-compass:
    service: ruby
    cmd: "gem install compass"
我没有在本地运行Lando。我正在使用PHPStorm同步我的文件,Lando正在远程运行

远程

我有一个DigitalOcean droplet建立并运行一个Lando(drupal8)站点。我可以访问该网站,该网站在以下位置正常运行:

165.xxx.xxx.xxx,为液滴的IP,且

ppppp,是Lando(docker)暴露容器的端口

.lando.yml

name: XXXXXX
recipe: drupal8
config:
  php: 7.1
  webroot: ./docroot
  xdebug: false // overridden later
services:
  appserver:
    build:
      - composer install
  ruby:
    type: ruby:2.4
    run:
      - "cd $LANDO_MOUNT && gem install compass"
tooling:
  blt:
    service: appserver
    cmd: /app/vendor/acquia/blt/bin/blt
  gem:
    service: ruby
  compass:
    service: ruby
  fix-compass:
    service: ruby
    cmd: "gem install compass"
.lando.local.yml

name: XXXXXX
recipe: drupal8
config:
  php: 7.1
  webroot: ./docroot
  xdebug: false // overridden later
services:
  appserver:
    build:
      - composer install
  ruby:
    type: ruby:2.4
    run:
      - "cd $LANDO_MOUNT && gem install compass"
tooling:
  blt:
    service: appserver
    cmd: /app/vendor/acquia/blt/bin/blt
  gem:
    service: ruby
  compass:
    service: ruby
  fix-compass:
    service: ruby
    cmd: "gem install compass"
因为我不想让我的开发伙伴使用这个配置

config:
  xdebug: true
  config:
    php: .lando.php.ini
.lando.php.ini

xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 0
xdebug.remote_host = localhost
xdebug.remote_port = 9002
xdebug.remote_log = /xdebug.log
xdebug.remote_mode = req
xdebug.idekey = PHPSTORM
PHPStorm服务器

  • 主机:本地主机
  • 港口:9002
  • 调试器:Xdebug
  • 使用路径映射(选中) --
    项目
    -->
    /app
我执行此操作的步骤

  • 开始侦听PHPStorm中的调试连接
  • 使用SSH-R 9002:localhost:9002创建SSH隧道root@165.xxx.xxx.xxx
  • 刷新
    http://165.xxx.xxx.xxx:ppppp
  • 调查结果

    • 使用
      lando php-i
      ,我可以看到xdebug正在端口9002上正常运行(我所有的php.ini配置都已设置)
    • 通过使用
      nc-zlocalhost 9002 | | echo'no tunnel open'
      ,我还可以判断SSH tunnel应该为9002打开
    • 我没有收到任何关于传入连接的提示
    更新:

    当我使用以下工具强制打开9002时,取得了一些进展:

    sudo iptables-A INPUT-p tcp-d 0/0-s 0/0-dport 9002-j ACCEPT

    然而,现在我得到了这个错误

    Log opened at 2019-08-20 02:54:17
    I: Connecting to configured address/port: 165.xxx.xxx.xxx:9002.
    W: Creating socket for '165.xxx.xxx.xxx:9002', poll success, but error: Operation now in progress (29).
    E: Could not connect to client. :-(
    Log closed at 2019-08-20 02:54:17
    

    所以今年我已经经历过几次了。我最初在几周前通过将PHPSTORM从2018.1升级到2019.1解决了这个问题。有人告诉我(在互联网上的某个线程上),下一个版本的xdebug的XML模式是不同的。它在更新后立即起作用。这似乎在2019年再次打破。2

    我最后一次让它工作是2019.1.3。祝你好运

    更新:当我继续更新storm和php/xdebug时,我发现这已经稳定下来了。有一阵子到处都是