如何在 Ubuntu 16.04 上设置 Docker + PhpStorm + xdebug
How to setup Docker + PhpStorm + xdebug on Ubuntu 16.04
我的问题是当我开始监听端口时 xdebug 不工作。我认为 PhpStorm 不能 link 与 xdebug。我刚得到调试器面板变量不可用。看起来 xdebug 没有正确的设置。
使用的软件和版本:
Ubuntu 16.04 LTS
Docker v 17.06
docker-compose 1.15
所以我尝试了很多次 setup 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 设置:
我找到了如何 运行 xdebug 的解决方案。
1) 首先我们需要创建一个基于您的网络设备的新静态路由。要创建新的静态路由:运行 in terminal 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 正在工作:
Linux 上的 Docker 允许 Xdebug 自动连接回主机系统,因此您只需设置 xdebug.remote_connect_back=1
并在 [=12] 中省略 xdebug.remote_host
=].
我的问题是当我开始监听端口时 xdebug 不工作。我认为 PhpStorm 不能 link 与 xdebug。我刚得到调试器面板变量不可用。看起来 xdebug 没有正确的设置。
使用的软件和版本:
Ubuntu 16.04 LTS
Docker v 17.06
docker-compose 1.15
所以我尝试了很多次 setup 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 设置:
我找到了如何 运行 xdebug 的解决方案。
1) 首先我们需要创建一个基于您的网络设备的新静态路由。要创建新的静态路由:运行 in terminal 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 设置。
服务器设置:
Docker 允许 Xdebug 自动连接回主机系统,因此您只需设置 xdebug.remote_connect_back=1
并在 [=12] 中省略 xdebug.remote_host
=].