我无法在 Docker + WSL 2 内的 WP Dev Env 上使用 XDebug 3 进行步骤调试
这是我的文件夹结构
忽略references.txt文件,这里没有用。
wordpress文件夹将包含所有 wordpress 文件。它在开始时是一个空文件夹,但在通过 docker-compose up 设置开发环境时将填充 WordPress 文件。
注意:所有这些文件都在通过 WSL 2 安装的 ubuntu 20.04 中。
docker-compose.yml文件
version: "3.9"
services:
db:
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_DATABASE: "wordpress"
MYSQL_USER: "wp"
MYSQL_PASSWORD: "secret"
MYSQL_ROOT_PASSWORD: "secret"
volumes:
- db_data:/var/lib/mysql
ports:
- 4406:3306
wp:
build:
context: ./build
dockerfile: Dockerfile
image: wp-local
restart: always
depends_on:
- db
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: "wordpress"
WORDPRESS_DB_USER: "wp"
WORDPRESS_DB_PASSWORD: "secret"
WORDPRESS_DEBUG: 1
WORDPRESS_CONFIG_EXTRA: |
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
/* https://gist.github.com/dianjuar/1b2c43d38d76e68cf21971fc86eaac8e */
define( 'FS_METHOD', 'direct' ); // Required to allow installing of plugins without the need for ftp access
volumes:
- ~/local_wp/wordpress:/var/www/html
ports:
- 8888:80
phpmyadmin:
image: phpmyadmin
restart: always
depends_on:
- db
ports:
- 9999:80
environment:
MYSQL_USER: "wp"
MYSQL_PASSWORD: "secret"
MYSQL_ROOT_PASSWORD: "secret"
volumes:
db_data:
注意:是的,我故意在wp服务中映射~/local_wp/wordpress而不是./wordpress ,因为我注意到如果我使用后者,它有点慢?我不知道为什么?它就像安装 wp 插件一样慢,如果我使用后者需要一分钟,但对于前者,它只需要 9-10 秒。
构建/Dockerfile
FROM wordpress:5.7.2-php7.4-apache
COPY ./php.ini /usr/local/etc/php/php.ini
# Install xdebug
RUN pecl install xdebug && docker-php-ext-enable xdebug
# Copy our xdebug.ini into the location the container's xdebug.ini
COPY ./xdebug.ini /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["apache2-foreground"]
php.ini文件实际上只有我在这里复制的默认内容https://github.com/php/php-src/blob/master/php.ini-development , 这里没什么特别的。
xdebug.ini
zend_extension=xdebug
[xdebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host = host.docker.internal
xdebug.client_port = 9000
同样,我似乎无法使步骤调试工作。我对 VS Code btw使用了php 调试扩展,并按照它的说明进行操作,但还是不行。
我也在WordPress的debug.log上得到了这个
[30-May-2021 02:34:11 UTC] Xdebug: [Step Debug] Time-out connecting to debugging client, waited: 200 ms. Tried: host.docker.internal:9000 (through xdebug.client_host/xdebug.client_port) :-(
我尝试在 docker-compose.yml 文件上公开端口 9000,但它不起作用。
我尝试从 xdebug.ini 中删除 xdebug.client_host = host.docker.internal,但它不起作用。
我尝试在 docker-compose.yml 文件上公开端口 9000、9001、9002、9003,因为我注意到有时它使用端口 9000,有时使用 9003,仍然无法正常工作。
任何帮助深表感谢。
提前致谢。