Docker的VSCode上的Xdebug包含PHP应用程序,在断点上没有停止
我事先很抱歉,我做了研究,我在这页上多次注意到同一个问题,我一直试图自己解决它,但我不太明白如何让它与我的具体配置一起工作 这是一个来自work的项目,其中包含以下Dockerfile:Docker的VSCode上的Xdebug包含PHP应用程序,在断点上没有停止,php,docker,debugging,visual-studio-code,xdebug,Php,Docker,Debugging,Visual Studio Code,Xdebug,我事先很抱歉,我做了研究,我在这页上多次注意到同一个问题,我一直试图自己解决它,但我不太明白如何让它与我的具体配置一起工作 这是一个来自work的项目,其中包含以下Dockerfile: FROM php:7.3-apache RUN apt-get update && apt-get install -y acl unzip \ && rm -r /var/lib/apt/lists/* COPY --from=mlocati/php-extensio
FROM php:7.3-apache
RUN apt-get update && apt-get install -y acl unzip \
&& rm -r /var/lib/apt/lists/*
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/bin/
RUN install-php-extensions gd intl pdo_mysql soap xdebug zip
RUN echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.remote_port=10000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.remote_host=172.17.0.1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
WORKDIR /var/www/app
COPY --from=composer:1.10 /usr/bin/composer /usr/bin/composer
COPY docker/000-default.conf /etc/apache2/sites-enabled/000-default.conf
COPY docker/app.conf /etc/apache2/conf-enabled/z-app.conf
COPY docker/app.ini $PHP_INI_DIR/conf.d/app.ini
RUN ln -s $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini
RUN a2enmod rewrite
它应该已经让Xdebug工作了,不是吗
我在VSCode上安装了php调试扩展,这是我的launch.json配置:
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 10000,
"pathMappings": {
"/var/www/app": "${workspaceFolder}"
},
}
我启动了调试会话,但项目没有在断点处停止,所以我迷路了
我希望你们能帮助我,谢谢 1)使用
phpinfo()执行一些PHP脚本代码>查看是否启用和配置了Xdebug。2) echo“xdebug.remote\u host=172.17.0.1”
每次构建docker映像时,此IP可能会有所不同。。。3) 如果一切正常——启用并收集Xdebug日志——它将显示它尝试连接的位置和响应。也许是你的防火墙(如果Xdebug方面一切都很好)@LazyOne我猜这些命令应该从docker容器内部运行?确切地说是哪些命令?对于#1——与您尝试调试的方式相同——只是检查一切是否正常。对于#2,您可以使用host.docker.internal
而不是IP(但目前它仅适用于Mac&Windows;在Linux上,您需要在制作/启动docker映像时动态检测IP)。对于#3——Xdebug日志是通过相同的php.ini设置的。只需确保它将保存在将从外部访问的某个位置(以便您可以阅读日志)。另外,以防万一:连接到IDE/editor的是Xdebug。。这将是从docker内部到主机操作系统的连接。@LazyOne-hmm,这是我的困惑,这个php.ini必须是docker容器上使用的,对吗?当容器运行时,我如何使它写入我可以读取的地方?@LazyOne另外,我是否需要将Xdebug ip设置为与docker容器ip相同?