【问题标题】:Only variables should be passed by reference php 5.4 vs php 5.5 Is it settings?只有变量应该通过引用传递 php 5.4 vs php 5.5 是设置吗?
【发布时间】:2014-12-06 16:42:48
【问题描述】:

在 php 5.4.32 中,以下行会产生这个致命错误:

....views/sales/register.php: 493","() Only variables should be passed by reference" 

在 php 5.5.14 中它不会产生错误。

php.ini 中是否有一个设置会导致在一个安装而不是另一个安装中出现致命错误?

我忘记发布了,哎呀,我以为是我输入的:

<td class="right"><?php echo to_currency($this->Giftcard->get_giftcard_value(end(explode(':', $payment['payment_type']))) - $payment['payment_amount']);?></td>

我不是问为什么会出错,而是问如何重现。

编辑: 新问题:

当“只有变量应该通过引用传递”发生时,如何让 php 5.5 产生致命错误。

我希望在开发模式下尽可能多地出现错误以支持尽可能多的php平台。

【问题讨论】:

  • 第 493 行是?有了你的代表,你应该知道得更好......
  • 我已经发布了。我不是问为什么错了,而是如何在 php 5.5 中重现
  • 你是说它在 PHP 5.5 中产生了预期的结果吗?还是它也会崩溃?也许你没有在你的 PHP 5.5 安装中激活完整的错误报告。
  • 克里斯,我的意思是你应该知道最好不要忘记发布第 493 行。:)
  • 在 php 5.5 中它不是一个致命错误(如果我查看日志,它仍然是一个错误,但在 php 5.4 中它是一个致命错误。

标签: php


【解决方案1】:

您是否关闭或打开了 E_STRICT?

如果它打开 - 它应该警告这个问题

What does E_STRICT do?

有关错误警告,请参见此处:

Treating Warnings as Errors

也许还要检查你的显示错误?

【讨论】:

  • 在 php 5.5 中,我设置了 E_ALL,根据 php.net 应该包括它。我的主要抱怨是它在 php 5.4 中产生了一个致命错误,但在 php 5.5 中没有。我认为还有另一种设置可以改变此类错误的致命性质
  • 该死..完成所有这些工作后,我意识到这个人是一个调试脚本,当它发现错误时,脚本中有一个 die(),使它看起来像一个致命错误。对这一切感到抱歉。
  • 嗯,我最初认为E_STRICT 无关紧要,但我只是撤回了它。我从这个线程中学到了一些有趣的东西——通过引用传递非变量是致命错误还是 E_STRICT 取决于您传递的 什么。传递文字 (function foo (&amp;$bar) {}; foo('die');) 是致命的,但传递函数调用的结果只是 E_STRICT (function foo (&amp;$bar) {}; foo(time());)。 PHP 是多么可笑的语言。我会更新你链接到的我的答案。
  • @MarkAmery 我同意。 Php 是一种非常荒谬的语言。我讨厌在里面工作。但它目前支付了账单。
猜你喜欢
  • 2017-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-11
相关资源
最近更新 更多