【发布时间】: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