我在使用 phalconphpubuntu-16.04 docker镜像,我想在该镜像上启用XDebug。引自镜像文档 https:/hub.docker.comrphalconphpubuntu-16.04。
Xdebug默认是禁用的。要启用它,你需要传递XDEBUG_REMOTE_ENABLE和XDEBUG_REMOTE_HOST环境变量。
变量 描述 XDEBUG_REMOTE_ENABLE=1 这将启用 Xdebug。XDEBUG_REMOTE_AUTO_START=1 启用自动启动将捕获所有请求。XDEBUG_REMOTE_HOST=192.168.0.1 Xdebug 远程主机。XDEBUG_REMOTE_PORT=9000 设置远程主机。如果你想手动启动调试会话,通过GET,POST或COOKIE传递变量XDEBUG_SESSION_START。
注意:要使用这个功能,你需要设置XDEBUG_REMOTE_HOST。
这是我的运行语句
docker run -d --network TEST
-p 80:80
-p 9000:9000
-e XDEBUG_REMOTE_ENABLE=1
-e XDEBUG_REMOTE_HOST=host.docker.internal
-v ${workspaceFolder}:/app
-v ${workspaceFolder}/docker:/etc/nginx/sites-enabled
phalconphp/ubuntu-16.04:php-7.2
当我看到 phpinfo(),xdebug没有加载?
你的docker运行语句没有问题。似乎有一个bug在 Dockerfile
的法尔康。我按照说明书中的 文件 我可以验证这是一个错误。
REPRODUCE步骤
index.php
和 nginx.conf
的结构。这些是文件的内容
<?php
// index.php
phpinfo();
# nginx.conf
server {
listen 80 default_server;
server_name example.com;
index index.php;
root /app/public;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_read_timeout 300;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
}
docker run \
-p 80:80 \
-v $(pwd):/app \
-v $(pwd)/docker/nginx.conf:/etc/nginx/sites-enabled/default:ro \
-e XDEBUG_REMOTE_ENABLE=1 -e XDEBUG_REMOTE_HOST=host.docker.internal \
phalconphp/ubuntu-16.04:php-7.2
预期结果启用Xdebug
实际结果Xdebug未启用
当我深挖到 Docker文件 我发现有入口文件的脚本,但是 ENTRYFILE
指令中缺少 Dockerfile
. 我已经建立了一个 牵引请求 这将解决这个问题。