【问题标题】:How to debug a php code from cli and Docker?如何从 cli 和 Docker 调试 php 代码?
【发布时间】:2018-09-19 02:05:41
【问题描述】:

我喜欢从命令行运行 script.php

$ php -f myscript.php

我可以使用die()print_r() 来跟踪这个过程。但是我无法像来自浏览器的常规 xdebug 会话那样连接到我的 IDE (IntelliJ)。

我在与 docker ubuntu 16.04 连接的 MacOS(HOST) 中运行。

IntelliJ 配置为侦听来自 Docker 的传入呼叫。我想当我使用我的终端时,我使用的是主机中的 php,这就是 IntelliJ 没有捕获连接的原因。

即使我从 Docker 容器内的终端运行,也不会触发 IntelliJ 中的 xdebug 进程。

注意: xdebug 在常规浏览器会话中与 Docker 和 IntelliJ 配合良好。我只是在构建容器时传递了 HOST IP,它就可以工作了。

这是我的 Dockefile 中设置 xdebug 的部分:

RUN { \
        echo '[xdebug]'; \
        echo 'zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so'; \
        echo 'xdebug.remote_enable=1'; \
        echo 'xdebug.remote_port=9000'; \  
        echo 'xdebug.remote_autostart=1'; \
        echo 'xdebug.remote_handler=dbgp'; \
        echo 'xdebug.idekey=dockerdebug'; \
        echo 'xdebug.profiler_output_dir="/var/www/html"'; \
        echo 'xdebug.remote_connect_back=0'; \
        echo 'xdebug.remote_host=$REMOTE_HOST'; \
    } >> /usr/local/etc/php/php.ini

我怎样才能实现这个调试过程?

【问题讨论】:

  • 嗨,他们没有使用 docker。我已经尝试了这些方法,但它不起作用。
  • 重点是与 Docker 唯一不同的是你如何配置网络。为了连接到 xdebug,您需要对其进行配置。你用的是什么端口?您是否确保该端口已映射,以便您的 IDE 可以连接到它?
  • 我的 docker 在 xdebug 上运行良好。它已经配置好了。不仅是端口,还有应该发送到容器的主机 ip。关键是如何在 cli 会话中运行要被 IntelliJ 捕获的 cli 文件。我试图从容器内外的终端运行。但它不起作用。

标签: php docker ubuntu-16.04 xdebug


【解决方案1】:

我找到了触发 xdebug 的方法。只需从 POSTMAN(GET 或 POST)调用 myscript.php 即可。 mysite.com/myscript.php

【讨论】:

    猜你喜欢
    • 2021-06-14
    • 1970-01-01
    • 2016-07-17
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    相关资源
    最近更新 更多