如何在Ubuntu 16.04上设置Docker + PhpStorm + xdebug

Rid*_*_BY 7 php ubuntu xdebug phpstorm docker

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

使用的软件和版本:

Ubuntu 16.04 LTS
Docker v 17.06
docker-compose 1.15
Run Code Online (Sandbox Code Playgroud)

所以我多次尝试设置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"
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

PhpStorm设置:

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

Paw*_*ała 9

泊坞窗上的Linux允许Xdebug的自动连接回主机系统,让您可以只设置xdebug.remote_connect_back=1并离开了xdebug.remote_hostxdebug.ini


Rid*_*_BY 5

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

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

并找出存在的网络设备。在我的情况下,设备名称将为

wlp4s0

在此处输入图片说明

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

> sudo ip addr add 10.254.254.254/24 brd + dev wlp4s0 label wlp4s0:1
Run Code Online (Sandbox Code Playgroud)

3)现在,如果再次运行,ifconfig您将看到新的静态路由: 在此处输入图片说明

4)更新

xdebug.ini
Run Code Online (Sandbox Code Playgroud)

文件添加:

xdebug.remote_host=10.254.254.254
Run Code Online (Sandbox Code Playgroud)

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

environment:
    PHP_IDE_CONFIG: "serverName=project-docker"
    PHP_XDEBUG_ENABLED: 1
    XDEBUG_CONFIG: remote_host=10.254.254.254
Run Code Online (Sandbox Code Playgroud)

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

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

  • 您实际上是否已安装并正在运行DBGp代理?您需要单独安装和配置这是另外一件事。如果您不这样做(很少使用..并且根本不需要本地单个开发人员工作),那么请删除该部分以避免混淆/误导其他具有类似问题的用户。 (2认同)