Using xdebug through Docker container in PhpStorm

匿名 (未验证) 提交于 2019-12-03 01:20:02

问题:

I've read some posts about this but none helped in my case or simply overlooked the missing piece.

I cannot get xdebug to work on PhpStorm using a Docker container.

Docker-compose.yml

version: '2'  services:   web:     image: nginx:latest     volumes:     - .:/usr/share/nginx/html     - ./nginx/nginx.conf:/etc/nginx/nginx.conf     - ./nginx/logs:/var/logs/nginx     - ./nginx/site-enabled/default.conf:/etc/nginx/sites-enabled/default.conf     ports:     - "80:80"     depends_on:     - php    db:     image: mysql:5.7     environment:       MYSQL_ROOT_PASSWORD: 1234       MYSQL_DATABASE: local_db       MYSQL_USER: root       MYSQL_PASSWORD: 1234     ports:     - "3306:3306"    php:     build: images/php     volumes:     - .:/usr/share/nginx/html     - ./config/docker/php/php.ini:/usr/local/etc/php/php.ini     - ./config/docker/php/ext-xdebug.ini:/usr/local/etc/php/conf.d/ext-xdebug.ini     - ./config/docker/php/php-fpm.conf:/usr/local/etc/php-fpm.conf     user: www-data     depends_on:     - db 

config/docker/php/ext-xdebug.ini

zend_extension="/usr/lib/php7/xdebug.so" xdebug.remote_enable=1 xdebug.remote_port=9000 xdebug.overload_var_dump=1 xdebug.default_enable=1 xdebug.remote_autostart=1 xdebug.idekey=PHPSTORM xdebug.remote_connect_back=1 xdebug.remote_host=172.20.0.1 # ip of host inside docker container xdebug.remote_log=/usr/share/nginx/html/xdebug.log 

error from xdebug.log

Log opened at 2017-05-31 11:01:14 I: Checking remote connect back address. I: Checking header 'HTTP_X_FORWARDED_FOR'. I: Checking header 'REMOTE_ADDR'. I: Remote address found, connecting to 172.20.0.1:9000. W: Creating socket for '172.20.0.1:9000', poll success, but error: Operation now in progress (29). E: Could not connect to client. :-( Log closed at 2017-05-31 11:01:14 

In PhpStorm I'm using remote debugger with following settings:

server

Host - 127.0.0.1   Port - 80  

Absolute path on server

/usr/share/nginx/html 

IDE session key

PHPSTORM 

回答1:

Ok I got the solution in here

https://forums.docker.com/t/ip-address-for-xdebug/10460/9

I had to set my internal ip to xdebug.remote_host and disable xdebug.remote_connect_back=0

Seems this is a osx thing. Hope this helps someone here



回答2:

I've found that the following config on ext-xdebug.ini works for Docker for Mac

xdebug.remote_connect_back=0 xdebug.remote_host=host.docker.internal 

Docker automatically defines host.docker.internal within containers. So we simply point xdebug to think host.docker.internal is the IP of host machine (which obviously is). This way, we don't have to rely on ever changing internal IP between docker container and host.

More information can be found here https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!