0

我一直在尝试删除 E_NOTICE 和 E_STRICT 错误级别以避免此错误:

Runtime Notice: Only variables should be passed by reference

我尝试修改 php.ini 但没有用,error_reporting 始终为-1。然后我尝试在当前操作中动态设置它,并且工作正常。然后我在 app_dev.php 的第一行也尝试了同样的方法,但没有奏效。这意味着 Symfony2 正在某处动态设置它。

我该怎么办?

编辑

对于那些不熟悉错误的人:

$user = $this->('security.context')->getToken()->getUser();

$first = reset($user->getRoles()); // error

$roles = $user->getRoles();
$first = reset($roles); // works fine
4

2 回答 2

3

虽然通知没有“延迟”,但在其他情况下这是一个合理的问题,因此:这是在内核实例中设置的,在 app_dev.php(或 app.php)中实例化。

构造的第二个参数是一个布尔调试标志,如果truethenerror_reporting设置为 -1 和display_errors1,否则分别设置为 default 和 0。

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

symfony文档

希望这可以帮助。

于 2012-11-28T10:36:01.883 回答
2

我在以下场景中遇到了同样的错误,即

场景: 我失去了现有 LIVE 项目的开发环境。但是我从 GIT repo 获得了整个代码,然后在我的新开发环境中安装了 symfony 2.4.2(与 LIVE 站点上的版本相同)。然后我发现在 LIVE 站点上运行的 Web 应用程序页面在我的新 DEV 环境中被破坏了。

解决方案: 我花了很多时间来理解为什么会出现问题然后我发现即

当我使用 composer.phar 在我的开发环境中安装 symfony 2.4.2 时,它在我的开发环境中创建了一个新的web/app_dev.php文件,它具有以下条目来关闭它,即

调试::启用() ;

只需评论上面的行,然后 php 通知将关闭,然后所有给我通知的页面都被修复。

我希望这对像我一样有同样问题的人有所帮助。祝你好运!

干杯。

PS:但我会建议在你的新开发项目中启用上述行,以便你可以看到 PHP 通知,然后在开发过程中将其删除。

于 2014-07-24T23:46:13.460 回答