【问题标题】:How to enable XDebug on phalconphp/ubuntu-16.04 docker image?如何在 phalconphp/ubuntu-16.04 docker 映像上启用 XDebug?
【发布时间】:2020-04-09 05:52:45
【问题描述】:

我正在使用 phalconphp/ubuntu-16.04 docker 映像,我想在该映像上启用 XDebug。引用https://hub.docker.com/r/phalconphp/ubuntu-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 手动传递变量 XDEBUG_SESSION_START, POST 或 COOKIE。

注意:要使用此功能,您需要设置 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 phalcon


    【解决方案1】:

    您的 docker run 语句很好。 phalcon 的Dockerfile 好像有bug。我按照documentation 中的说明进行操作,我可以验证这是一个错误。


    复制步骤

    1. 在以下结构中创建两个文件index.phpnginx.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;
        }
    }
    
    1. 然后使用这个命令运行docker容器
    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 未启用


    当我深入研究Dockerfile 时,我发现有入口文件脚本,但Dockerfile 中缺少ENTRYFILE 指令。我创建了一个Pull Request 来解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 2016-11-17
      • 1970-01-01
      • 2016-11-14
      • 2019-09-03
      相关资源
      最近更新 更多