如何使 Xdebug (v3) 在 Windows 主机上与 VSCode 和 Docker(或 Podman)配合使用?

问题描述 投票:0回答:1

当我在 Windows 主机上本地使用 Xdebug 和 VSCode(以及 PHP 调试扩展)时,它工作得很好。 但是当我尝试在 docker/podman 容器上使用 Xdebug 时,它不起作用 - 即使连接成功,它也不会在断点处停止。

这是我的

Dockerfile
:

# Use official PHP image with FPM and CLI
FROM php:8.2-fpm

# Install system dependencies and PHP extensions for Laravel
RUN apt-get update && apt-get install -y \
    git \
    unzip \
    libpq-dev \
    libonig-dev \
    libxml2-dev \
    libzip-dev \
    && docker-php-ext-install pdo pdo_mysql pdo_pgsql zip mbstring xml

# Install Xdebug
RUN pecl install xdebug && docker-php-ext-enable xdebug

# Configure Xdebug
RUN echo "zend_extension=xdebug.so" >> /usr/local/etc/php/php.ini \
    && echo "xdebug.mode=debug" >> /usr/local/etc/php/php.ini \
    && echo "xdebug.client_host=host.docker.internal" >> /usr/local/etc/php/php.ini \
    && echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/php.ini \
    && echo "xdebug.client_port=9003" >> /usr/local/etc/php/php.ini \
    && echo "xdebug.remote_port=9003" >> /usr/local/etc/php/php.ini \
    && echo "xdebug.log=/tmp/xdebug.log" >> /usr/local/etc/php/php.ini  \
    && echo "xdebug.idekey=VSCODE" >> /usr/local/etc/php/php.ini 

# Install Composer globally
COPY --from=composer:2.4 /usr/bin/composer /usr/bin/composer

# Set the working directory to /var/www
WORKDIR /var/www

# Copy the Laravel project to the container
COPY . .

# Install Laravel dependencies
RUN composer install --no-interaction --prefer-dist --optimize-autoloader

# Set permissions for storage and cache
RUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache

# Expose port 8000 for Laravel's Artisan serve
EXPOSE 8000

# Start the Laravel development server
CMD php artisan serve --host=0.0.0.0 --port=8000

这就是我构建和运行容器的方式:

podman build . -t=xdebug

podman run -d -p 8000:8000 -p 9003:9003 xdebug

xdebug_info()
的输出表明连接成功,没有错误。

我在某处读到它可能与

pathMappings
有关:https://github.com/xdebug/vscode-php-debug/issues/653#issuecomment-919385770

虽然我尝试了一些选项,但它仍然不起作用(也许问题is

pathMappings
相关,但无法使其仍然工作。在这种情况下我的值应该是什么?这是一个 Laravel 项目,如果这很重要)

php laravel docker visual-studio-code xdebug
1个回答
0
投票

尝试使用

xdebug.client_host=172.17.0.1
pathMappings
应该是这样的:
"localProjectPath": "dockerProjectPath"
在你的情况下
dockerProjectPath
/var/www
。所以我想这就是问题所在:
client_host
pathMappings

© www.soinside.com 2019 - 2024. All rights reserved.