我不是在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之外使用转储服务器功能,但是我想知道这是否正确,并且我在文档中没有看到任何证据。希望您能提供帮助,因为我不知道该怎么办/尝试。
答案 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));
});