禁用生产 Symfony 中的错误

Posted

技术标签:

【中文标题】禁用生产 Symfony 中的错误【英文标题】:Disable Error in Production Symfony 【发布时间】:2018-07-14 22:14:32 【问题描述】:

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

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

当我在控制器中测试时犯了一个错误

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

    

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

dsgds 注意:使用未定义的常量 dd - 在 D:\xampp\htdocs\weebly\development-two\src\AppBundle\Controller\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

【问题讨论】:

添加那些你已经检查过的 @DeadManAlive.updated 现在还有几个引用我没有链接 @vision 错误页面是否正常工作? (symfony.com/doc/2.7/controller/…) @fab.even 我尝试创建自定义页面,但我的错误是它仅适用于 404 不适用于致命错误或 500 内部服务器 erorr。我的目标是隐藏致命错误并注意错误 【参考方案1】:

dd 在这里是未定义的变量。 如果您想将 $var 的值设置为字符串 'dd' 则可以,但在这里您不要放任何 '' 。所以它的行为是一个你以前没有定义的常量变量。

谢谢

【讨论】:

我这样做是为了检查它是如何在生产中引发错误的。我的问题是我们如何在生产中隐藏错误。即使在 laravel 中,我们也可以在其运行时隐藏 @roabak 如果生产和开发都出现错误,那么禁用有什么用 可以给我检查的网址吗? 签入本地主机 localhost/project_name/web/app.php/route 还是 localhost/project_name/web/app_dev.php/route ?你用的是哪一个【参考方案2】:

正如之前所说,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.second 坏主意: 可能将所有操作代码放在 try .. catch 中?

【讨论】:

【参考方案3】:

它可能是转储,但是,当它发生在生产模式时,你清理你的缓存了吗? (或者甚至删除它以确保)。

【讨论】:

@kalfei59.cache 已删除

以上是关于禁用生产 Symfony 中的错误的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 4 生产模式错误处理页面内存耗尽

生产中的前缀错误 | Symfony 5 |找不到路线

禁用 Symfony 2 类型中选择字段的后端验证

在 Symfony 2(.7) 中禁用已弃用的警告

Symfony 2 搜索表单呈现一个不需要的搜索字段。我可以禁用此行为吗?

生产环境中的 Symfony 2 Assetic css 和 js 404