禁用生产Symfony中的错误

时间:2018-02-05 04:57:30

标签: php symfony symfony-2.1 symfony-2.3

我已经安装了Symfony 2.7.41并在app.php中启用了生产模式

$kernel = new AppKernel('prod', false);

当我在控制器中通过制作一个错误进行测试时

public function indexAction(Request $request)
    {
        echo "dsgds";
        $var=dd;
        exit();

    }

但即使在生产中显示erorr而不是500内部服务器错误

  

dsgds注意:使用未定义的常量dd - 假定为'dd'   d:\ XAMPP \ htdocs中\ weebly \开发二的\ src \的appbundle \控制器\ DefaultController.php   第17行

已经阅读以下内容 Dev Exceptions are shown in production environment

Moving app to production mode in Symfony 2

Symfony: disable exceptions in prod mode

Error on "production" environment on Symfony2

3 个答案:

答案 0 :(得分:0)

dd是未定义的变量。 如果你想将$var的值设置为字符串'dd',那么它就可以了,但是你不要放任何''。所以它表现出一个你以前没有定义过的常量变量。

谢谢

答案 1 :(得分:0)

正如之前所说,dd应该在'(作为字符串)以避免错误,但据我所知,这不是你所要求的。

您想要隐藏例外....

你可能不喜欢anwser,但你甚至都没有尝试过。 老实说(这是一个坏主意)我不知道它是否可能,但你应该从symfony事件系统开始。

也许尝试捕获kernel.exception事件并停止事件传播

如何做的一些提示应该在这里:

https://symfony.com/doc/2.7/controller/error_pages.html https://symfony.com/doc/2.7/event_dispatcher.html

但这是一个非常糟糕的主意 - 你作为一个创建代码的人应该尝试无错误地执行代码,而不是隐藏它(这就是为什么存在test和phpunit)。 恕我直言,symfony最好的事情是这个框架迫使你学习OOP和错误/异常处理

PS。第二个坏主意:也许将所有操作代码放入try .. catch?

答案 2 :(得分:0)

它可能是转储,但是,正如它在生产模式下发生的那样,是否要清理缓存? (甚至删除它以确定)。