如何跟踪是否从浏览器/ Docker容器发送了Xdebug请求?

时间:2019-10-14 16:51:41

标签: docker phpstorm xdebug

我有一个使用Xdebug设置的PhpStorm IDE,这是一个包含Xdebug并应用了浏览器模块的docker容器。但是,当我尝试“拿起电话”并刷新环境中包含的代码时,什么也没捡到。

我尝试了各种端口和服务器名称,以及可以找到的教程。我不确定它是安全性还是我的docker设置不正确,但我相对确定PhpStorm设置正确。

我尝试在Dockerfile(9000和9001)中公开端口

我的.php文件只是回声和一些应用了断点的数学运算

echo("TEST 1<br>");
$test = 2;
echo("TEST " . $test . "<br>");

$testArray = xdebug_get_code_coverage();
var_dump($testArray);
phpinfo();

dd("TEST 3");

在我的.env文件中,定义了以下内容:

PHP_IDE_CONFIG=serverName=jumbledowns-demo
XDEBUG_CONFIG=remote_host=localhost remote_port=9001

然后我的Dockerfile设置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;

浏览器端的PHPinfo按照预期显示代码,并提供Xdebug的以下设置:

xdebug.remote_host  localhost   localhost
xdebug.remote_log   no value    no value
xdebug.remote_mode  req req
xdebug.remote_port  9001    9000

我已经在上面尝试使用URL和分配的IP地址,并且可以根据需要更改它们。

理想情况下,我希望能够有一个命令行日志或输出来显示Xdebug试图调用的内容以及在哪个端口上。

1 个答案:

答案 0 :(得分:0)

为了找出Xdebug打算做什么,您需要将xdebug.remote_log设置设置为非空值,例如xdebug.remote_log=/tmp/xdebug.log。该文件将包括所有连接尝试,以及建立连接后的通信协议内容。

  

remote_host =本地主机

但是几乎可以肯定是不正确的,因为在docker容器中运行的PHP和Xdebug需要打开与此主机的连接,而localhost并不是正确的主机名/ IP地址。很有可能是host.docker.internal之类的东西,或者更确切地说,是可以从docker容器访问的硬编码您运行IDE的机器的IP地址。