Symfony转储服务器正在侦听,但转储时却听不到

时间:2018-08-21 01:38:52

标签: symfony symfony4

我不是在Symfony中工作,而是通过composer拉入symfony / var-dumper软件包,并且在进行简单测试时也可以正常工作

<?php
include 'vendor/autoload.php';
dump('Hello World of Dumping');

我在浏览器中看到的输出很好。

VarDumper的Symfony文档显示有一个“转储服务器” https://symfony.com/doc/current/components/var_dumper.html#the-dump-server,这确实是我想要进行转储的方式。问题是,由于我没有使用Symfony,所以我正在尽最大努力弄清楚如何使用它。我确实拉进了控制台包:

composer require symfony/console --dev

因此,在终端(ubuntu)中,我运行以下命令:

./vendor/bin/var-dump-server

当我这样做时,终端显示:

  

[确定]服务器正在监听tcp://127.0.0.1:9912

但是当我运行测试脚本并进行一些转储时,终端上什么也没看到。没有变化。

即使那没有用,我真正想要做的是登录到文件。如果我尝试运行命令并指定HTML格式和要转储的文件,它将创建文件,但是当我进行转储测试时,文件中没有任何内容:

./vendor/bin/var-dump-server --format=html > dump.html

再次,它只是说服务器正在监听。

现在,在查看文档并告诉我我疯了之前,我知道文档将命令显示为:

./bin/console server:dump

但是我不使用Symfony,我假设必须要使该命令起作用。我可能错了...

因此,我正在寻找有关转储服务器问题的帮助。也许不能在Symfony之外使用转储服务器功能,但是我想知道这是否正确,并且我在文档中没有看到任何证据。希望您能提供帮助,因为我不知道该怎么办/尝试。

1 个答案:

答案 0 :(得分:4)

Symfony文档不完整。即使在高级用法页面上也没有引用它,但是需要使用ServerDumper类。像这样使转储服务器正常工作的简单操作:

<?php
include 'vendor/autoload.php';

use Symfony\Component\VarDumper\VarDumper;
use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\ServerDumper;

VarDumper::setHandler(function ($var) {
    $cloner = new VarCloner();
    $dumper = new ServerDumper('tcp://127.0.0.1:9912');     
    $dumper->dump($cloner->cloneVar($var));
});