我尝试了在互联网上找到的所有教程,但仍然无法使用docker toolbox在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配置中,我具有以下内容:
代理:
模糊的项目是Username
和project 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
有人知道我在这里做错了什么吗?
当我尝试断开telnet 192.168.99.100 9001
时,无法建立连接,端口9000
都无法建立,但是端口80
给了我很好的响应。
有人知道这里发生了什么吗?
答案 0 :(得分:2)
Xdebug需要打开与Table1.findAll({
include: [{model: Table2, as : 'whatever'}],
where :
Sequelize.where(Sequelize.literal('json_extract(metadata, \'$.level\')'),
{Op.like : '%senior%'})
})
中的IP地址必须是IDE的IP地址,而不是Docker容器的IP地址(HTTP / Apache在端口80上侦听)。
答案 1 :(得分:1)
必须满足3个条件,xdebug才能与VirtualBox一起远程使用,尤其是在virtualbox内部与Docker连接时。
1) remote_connect_back = 1或主机的确切IP地址(可能经常有所不同)必须在remote_host配置字段中列出(有时有时无法同时使用)在一起,尤其是在docker与virtualbox分开=直接在Windows hyper-v的情况下
2)没有其他应用程序,例如可以在端口9000处公开一个Web项目,该端口必须为php编辑器保留,或者必须由该编辑器/在(或对于php Web项目)侦听该端口,并从/寻址到该端口。 php,这是一个基于项目的配置
3)它类似于第二点,VirtualBox必须没有端口转发到该端口,因为它将有效地占用它,但必须保留给php编辑器,而不是为virtualbox端口转发。并非virtualbox必须在该端口上侦听以转发到某些内部应用程序,但外部php-editor必须侦听它=该端口
答案 2 :(得分:0)
还值得强调的是它是 xdebug.remote_host 还是 xdebug.remote_autostart。 the docs 和 previous comment 中都提到了这一点。
换句话说 - 如果您觉得您的 remote_host 设置被忽略,请检查 remote_autostart 是否没有意外打开。