Symfony 转储服务器监听,但在我转储时听不到
Symfony dump server listening, but not hearing when I dump
我不是在 Symfony 工作,而是通过 composer 引入了 symfony/var-dumper 包,当我做一个简单的测试时它工作得很好:
<?php
include 'vendor/autoload.php';
dump('Hello World of Dumping');
我在浏览器中看到的输出很好。
VarDumper 的 Symfony 文档显示有一个 "Dump Server", https://symfony.com/doc/current/components/var_dumper.html#the-dump-server ,这正是我想要进行转储的方式。问题是,因为我没有使用 Symfony,所以我正在尽最大努力弄清楚如何使用它。我确实拉入了控制台包:
composer require symfony/console --dev
所以,在终端 (ubuntu) 中,我 运行 这个命令:
./vendor/bin/var-dump-server
当我这样做时,终端显示:
[OK] Server listening on tcp://127.0.0.1:9912
但是当我 运行 我的测试脚本并进行一些转储时,我在终端中看不到任何东西。没有变化。
尽管这不起作用,但我真正想做的是记录到一个文件中。如果我尝试 运行 命令并指定 HTML 格式和要转储的文件,它会创建文件,但是当我进行转储测试时,文件中没有任何内容:
./vendor/bin/var-dump-server --format=html > dump.html
同样,它只是说服务器正在侦听。
现在,在您查看文档并告诉我我疯了之前,我知道文档将命令显示为:
./bin/console server:dump
但我没有使用 Symfony,我假设我必须是为了让该命令起作用。我可能是错的...
所以,我正在寻求有关转储服务器问题的帮助。也许转储服务器功能不能在 Symfony 之外使用,但我想知道这是不是真的,我在文档中没有看到这方面的证据。我希望你能帮忙,因为我不知道还有什么可以do/try。
Symfony 文档不完整。没有对它的引用,即使在高级用法页面上也是如此,但是需要使用 ServerDumper class。像这样简单的事情让转储服务器工作:
<?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));
});
要获取与 laravel 相同的转储数据,您应该安装两个作曲家包作为开发依赖项。
composer require --dev symfony/var-dumper
composer require --dev symfony/console
在您的控制器内 运行 下面的代码
dump($anyVariable);
然后你会得到像下面一样的转储输出laravel
我不是在 Symfony 工作,而是通过 composer 引入了 symfony/var-dumper 包,当我做一个简单的测试时它工作得很好:
<?php
include 'vendor/autoload.php';
dump('Hello World of Dumping');
我在浏览器中看到的输出很好。
VarDumper 的 Symfony 文档显示有一个 "Dump Server", https://symfony.com/doc/current/components/var_dumper.html#the-dump-server ,这正是我想要进行转储的方式。问题是,因为我没有使用 Symfony,所以我正在尽最大努力弄清楚如何使用它。我确实拉入了控制台包:
composer require symfony/console --dev
所以,在终端 (ubuntu) 中,我 运行 这个命令:
./vendor/bin/var-dump-server
当我这样做时,终端显示:
[OK] Server listening on tcp://127.0.0.1:9912
但是当我 运行 我的测试脚本并进行一些转储时,我在终端中看不到任何东西。没有变化。
尽管这不起作用,但我真正想做的是记录到一个文件中。如果我尝试 运行 命令并指定 HTML 格式和要转储的文件,它会创建文件,但是当我进行转储测试时,文件中没有任何内容:
./vendor/bin/var-dump-server --format=html > dump.html
同样,它只是说服务器正在侦听。
现在,在您查看文档并告诉我我疯了之前,我知道文档将命令显示为:
./bin/console server:dump
但我没有使用 Symfony,我假设我必须是为了让该命令起作用。我可能是错的...
所以,我正在寻求有关转储服务器问题的帮助。也许转储服务器功能不能在 Symfony 之外使用,但我想知道这是不是真的,我在文档中没有看到这方面的证据。我希望你能帮忙,因为我不知道还有什么可以do/try。
Symfony 文档不完整。没有对它的引用,即使在高级用法页面上也是如此,但是需要使用 ServerDumper class。像这样简单的事情让转储服务器工作:
<?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));
});
要获取与 laravel 相同的转储数据,您应该安装两个作曲家包作为开发依赖项。
composer require --dev symfony/var-dumper
composer require --dev symfony/console
在您的控制器内 运行 下面的代码
dump($anyVariable);
然后你会得到像下面一样的转储输出laravel