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,因爲消除傳遞引用導致現有代碼無法正常工作。 –

相關問題