如何使用phpStorm调试我的docker容器

2022-08-30 18:33:33

在以下 IP 下,我的容器在我的 Web 浏览器中成功运行

http://192.168.99.100:32775

我还创建了一个卷来在我的容器和文件系统之间共享文件

docker run --name lampf -d -p 32775:80 -v /Users/sja/Sites/lamkepf2:/var/www/html --link=lampf_db:db codinglimo/apache_php540_gs_imgmck_pdflib9

现在,我还使用以下xdebug在我的容器中成功安装了xDebug.ini

zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"

xdebug.remote_enable=on
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=0
xdebug.profiler_output_dir="/temp/profiledir"

PHPStorm 也已配置

http://img2.picload.org/image/iowdpww/xdebug.png

但是索引中的断点.php被忽略了吗?我的错误是什么?

在谢尔盖的帮助下解决问题

我的新 xdebug.ini

zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"

xdebug.remote_enable=on
#xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_connect_back=On
xdebug.remote_handler=dbgp
xdebug.profiler_enable=0
xdebug.profiler_output_dir="/temp/profiledir"

答案 1

您的 Docker 容器无法看到 IP 为 127.0.0.1 的 PHP Storm IDE,通常主机在容器内为 172.17.42.1。此外,remote_connect_back可能不会很好地工作。尝试按如下方式进行设置:

xdebug.remote_host=172.17.42.1 
xdebug.remote_connect_back=Off

您可能需要寻找一种正确的方法来了解容器中主机的IP,172.17.42.1只是默认值,但可能并不总是这样。


答案 2

它只适用于我在容器内执行:

pecl install -o -f xdebug \
&& rm -rf /tmp/pear \
&& echo "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so" > /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_enable=on"  >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_host=172.17.42.1" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_connect_back=On" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "memory_limit = 64M" > /usr/local/etc/php/conf.d/php.ini

然后,重新启动容器。

172.17.42.1 是运行 Docker 时主机的默认 IP。您可以获取在容器中执行的主机的 IP:

/sbin/ip route|awk '/default/ { print $3 }'

推荐