繁体   English   中英

Docker 工具箱 Xdebug 不适用于 PhpStorm

[英]Docker toolbox Xdebug not working with PhpStorm

我尝试了在互联网上找到的所有教程,但仍然无法使用 docker 工具箱在 PhpStorm 中使用简单的断点...

我目前在我的Dockerfile里面有这个:

# Install xdebug
RUN pecl install xdebug; \
    docker-php-ext-enable xdebug; \
    echo "error_reporting = E_ALL" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "display_startup_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "display_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.remote_port=9001" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.remote_connect_back=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.remote_host=192.168.99.100" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.idekey=PHPSTORM" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;

Xdebug 已正确安装和配置( php -i输出):

xdebug.remote_autostart => On => On
xdebug.remote_connect_back => Off => Off
xdebug.remote_cookie_expire_time => 3600 => 3600
xdebug.remote_enable => On => On
xdebug.remote_handler => dbgp => dbgp
xdebug.remote_host => 192.168.99.100 => 192.168.99.100
xdebug.remote_log => no value => no value
xdebug.remote_mode => req => req
xdebug.remote_port => 9001 => 9001
xdebug.remote_timeout => 200 => 200
xdebug.idekey => PHPSTORM => PHPSTORM

在我的 PhpStorm 配置中,我有以下内容:

代理人:

DBGp 代理

调试调试

PHP 解释器PHP 解释器

调试配置调试配置

服务器配置服务器配置

模糊的项目是Usernameproject name

我在一个项目中有 2 个文件夹,一个名为docker并包含所有 docker 文件和一个site ,其中包含所有站点文件。

我的 docker-compose 的配置如下:

version: '3'

services:
  application:
    image: project_image:latest
    environment:
      - C_UID=${C_UID:-1000}
      - C_GID=${G_UID:-1000}
      - DEVELOPMENT=${DEVELOPMENT:-1}
      - ~/.ssh:/var/www/.ssh
      - ~/.composer:/var/www/.composer
    env_file:
      - .env
    volumes:
      - ${APPLICATION:-../site}:/phpapp
    ports:
      - 9001:9001

  nginx:
    image: dockerwest/nginx-laravel:${NGINXVERSION:-stable}
    environment:
      - VIRTUAL_HOST=${BASEHOST:-project_name.docker},${EXTRAHOSTS}
    volumes:
      - ${APPLICATION:-../site}:/phpapp
    links:
      - application
    ports:
      - 80:80

有人知道我在这里做错了什么吗?

当我尝试 de telnet 192.168.99.100 9001时,端口9000也无法建立连接,但端口80给了我很好的响应。

有谁知道这里发生了什么?

Xdebug 需要打开PhpStorm 的连接。 您不需要 Docker 中暴露的端口,也不需要使用 Xdebug 代理做任何事情。 远程登录需要从您的 docker 容器到 PhpStorm 完成。 The IP address in xdebug.remote_host , needs to be the IP address of your IDE, and not the IP address of your docker container (where HTTP/Apache listens on port 80).

xdebug 必须满足 3 个条件才能与 VirtualBox 远程工作,特别是与 virtualbox 内的 Docker 相关联。

1) remote_connect_back=1 或主机的确切地址 ip 必须列在 remote_host 配置字段中(有时两者不能同时工作,特别是在 docker 被与virtualbox分开=直接在windows hyper-v)

2)没有其他应用程序,例如。 web-project 可以在端口 9000 公开,必须为 php 编辑器保留,或者编辑器必须保留不同的端口/收听在(或 php Z2567A5EC9705EB7AC2C98403)和从项目地址/传输到 E php,是基于工程的配置

3)与第二点类似,VirtualBox 必须没有端口转发到该端口,因为它会有效地占用它,但它必须保留给 php 编辑器,而不是用于 virtualbox 端口转发。 不是 virtualbox 必须在该端口侦听以转发到某个内部应用程序,但外部 php-editor 必须侦听它=该端口

还值得强调的是它是 xdebug.remote_host 还是 xdebug.remote_autostart。 这在文档之前的评论中都提到了。

换句话说 - 如果您感觉自己的 remote_host 设置被忽略,请检查 remote_autostart 是否被意外打开。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM