2015-04-12 58 views
0

我必须使用一些传统的PHP 4代码。我有PHP 5.4安装在我的机器上,并让这个讨厌的错误:PHP 5.4呼叫时传递引用已被删除 - 要忽略的方式?

"Fatal error: Call-time pass-by-reference has been removed in ..." 

我已经找到了解决方案/修复,但它需要在现有代码的变化。 我的问题是 - 有没有办法IGNORE这个错误?我不想修复它(因为它需要很多代码更改),但忽略并完成我的工作。我正在寻找PHP/Apache中的某种“配置”更改,因此我不需要混淆遗留代码。

是的,是的......我知道这不是一个好习惯,但不幸的是,这正是我现在需要的。

+0

可能重复[如何搭上PHP致命错误(http://stackoverflow.com/问题/ 277224 /如何做,我赶上一个PHP的致命错误) – kero

回答

3

致命错误无法停止(这就是为什么他们被称为致命的) - 甚至没有像set_error_handler这样的东西。

必须更改您的代码。

但固定它不应该是一个巨大的问题,因为错误是由&在功能上造成调用:

function test($param) { } 
test(&$test);  // fatal error 

function test(&$param) { } 
test($test);  // no error 

Documentation

  • 作为PHP 5.3.0中,你会得到当您在foo中使用&(& $ a);不建议使用“通话时间通过引用”的警告。
  • 而从PHP 5.4.0开始,调用时传递引用被删除,所以使用它会引发致命错误。

因此,为了使一个(非常)讨厌的解决方法,你可以安装PHP 5.3.0 :(

+0

太糟糕了,它不能通过某种配置更改完成无论如何,谢谢你明确!我想我会不得不降级到5.3,因为消除传递引用导致现有代码无法正常工作。 –