【问题标题】:How to setup Docker + PhpStorm + xdebug on Ubuntu 16.04如何在 Ubuntu 16.04 上设置 Docker + PhpStorm + xdebug
【发布时间】:2017-09-17 10:27:51
【问题描述】:

我的问题是当我开始监听端口时 xdebug 不起作用。我认为 PhpStorm 无法与 xdebug 链接。我只是得到调试器面板变量不可用。看起来 xdebug 的设置不正确。

使用的软件和版本:

Ubuntu 16.04 LTS
Docker v 17.06
docker-compose 1.15

所以我尝试了很多次设置 xdebug + Docker + PhpStorm 但无法做到。我已经阅读了很多教程,但没有什么对我有帮助。

我的docker-compose.yml 看起来像这样:

version: '3'
services:
    web:
        image: nginx:latest
        ports:
            - "80:80"
        restart: on-failure
        volumes:
            - "./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf"
            - "./etc/ssl:/etc/ssl"
            - "./project:/var/www/html/project"
        depends_on:
            - php
            - db

    php:
        image: nanoninja/php-fpm
        restart: on-failure
        volumes:
            - "./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
            - "./project:/var/www/html/project"
    db:
        image: mysql
        container_name: ${MYSQL_HOST}
        restart: on-failure
        env_file:
            - ".env"
        environment:
            - MYSQL_DATABASE=${MYSQL_DATABASE}
            - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION
        ports:
            - "8988:3306"
        volumes:
            - "./data/db/mysql:/var/lib/mysql"

我的xdebug.ini 是:

xdebug.default_enable=0
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_autostart=0
xdebug.remote_connect_back=0
xdebug.idekey="PHPSTORM"
xdebug.profiler_enable=0
xdebug.remote_host=localhost

PhpStorm 设置:

【问题讨论】:

标签: php ubuntu docker phpstorm xdebug


【解决方案1】:

Linux 上的 Docker 允许 Xdebug 自动连接回主机系统,因此您只需设置 xdebug.remote_connect_back=1 并在您的 xdebug.ini 中省略 xdebug.remote_host

【讨论】:

  • 这是一个非常有用的解决方案!在 Mint 20 上为我工作。谢谢!
  • 伙计,你在浪费了几个小时试图让它在 Ubuntu 上运行之后救了我的命,就像一个魅力,tk you so muchh!!
【解决方案2】:

我找到了如何运行 xdebug 的解决方案。

1) 首先,我们需要创建一个基于您的网络设备的新静态路由。创建新的静态路由:在终端运行ifconfig

并发现存在的网络设备。在我的情况下,设备名称将是

wlp4s0

2) 继续。让我们开始创建静态路由。在终端运行命令如下:

> sudo ip addr add 10.254.254.254/24 brd + dev wlp4s0 label wlp4s0:1

3) 现在,如果您再次运行ifconfig,您将看到新的静态路由:

4) 更新

xdebug.ini

文件添加:

xdebug.remote_host=10.254.254.254

5) 更新docker.compose.yml 文件: 在php 部分添加:

environment:
    PHP_IDE_CONFIG: "serverName=project-docker"
    PHP_XDEBUG_ENABLED: 1
    XDEBUG_CONFIG: remote_host=10.254.254.254

6) 最后一件事是更新 phpstorm 设置。

服务器设置: 远程调试配置: 7)利润xdebug正在工作:

【讨论】:

  • 实际上是否安装并运行了 DBGp 代理?这是一个单独的东西,您需要单独安装和配置。如果您不这样做(很少使用......而且本地单一开发工作根本不需要) - 那么请删除该部分以避免混淆/误导其他有类似问题的用户。
  • 是的。你是对的。 DBGP 代理我没有安装代理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
相关资源
最近更新 更多