Php 在生产中使用Symfonys转储
我在我们的一个应用程序中使用了Php 在生产中使用Symfonys转储,php,symfony,Php,Symfony,我在我们的一个应用程序中使用了dump功能,我们的客户在开发过程中已经习惯了它(tbh我不知道它在prod中不起作用)。现在,应用程序即将上线,这意味着不再有debug模式,也不再有dump功能 在生产过程中是否有任何方法可以启用dump功能?尽管在生产环境中使用dump() 如果我没有弄错的话,dump()来自DebugBundle,它仅在dev和testenv中启用 public function registerBundles() { $bundles = [ ne
dump
功能,我们的客户在开发过程中已经习惯了它(tbh我不知道它在prod中不起作用)。现在,应用程序即将上线,这意味着不再有debug
模式,也不再有dump
功能
在生产过程中是否有任何方法可以启用
dump
功能?尽管在生产环境中使用dump()
如果我没有弄错的话,dump()
来自DebugBundle
,它仅在dev
和test
env中启用
public function registerBundles()
{
$bundles = [
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new AppBundle\AppBundle(),
];
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
if ('dev' === $this->getEnvironment()) {
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
$bundles[] = new Symfony\Bundle\WebServerBundle\WebServerBundle();
}
}
return $bundles;
}
如上所述,
DebugBundle
仅在前面提到的环境中注册。可能将其移出if
将允许您在生产中使用dump()
您确实需要将这一行添加到AppKernel.php中:
$bundles[]=new Symfony\Bundle\DebugBundle\DebugBundle();
但同时将app.php中的布尔值从false更改为true:
$kernel=new-AppKernel('prod',true);//在这里的第二个参数中,true替换false
已针对Symfony 4.4进行测试,并能正常工作。阅读Symfony文档,了解用于转储()的客户端?那是一种特殊的客户。我想说,这是一个尴尬的习惯。在生产中是行不通的。我建议您使用var\u dump()函数。如果(函数存在('dump'))…创建另一个函数,并声明一个使用
print\u()的dump()
或var\u dump()
或其他内容的dump()
。另外,还有一些关闭它的方法(可能会话中的管理开关启用了它?)。使用Symfony dump可以生成我在呈现JSON结构时看到的最简单、最人性化的输出。我也很想在制作中看到这个。。。我想现在就试试打印吧。。。