禁用生产 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 中的错误的主要内容,如果未能解决你的问题,请参考以下文章