Fatal error: Call-time pass-by-reference has be...

 allow_call_time_pass_reference boolean php

    在函數調用時參數被按照引用傳遞時是否發出警告。此方法已不被同意並在 PHP/Zend 將來的版本中極可能再也不支持。鼓勵使用的方法是在函數定義中指定哪些參數應該用引用傳遞。鼓勵你們嘗試關閉此選項並確保腳本可以正常運行,以確保該腳本也能在將來的版本中運行(每次使用此特性都會收到一條警告)。 html

    在函數調用時經過引用傳遞參數是不推薦的,由於它影響到了代碼的整潔。若是函數的參數沒有聲明做爲引用傳遞,函數能夠經過未寫入文檔的方法修改其參數。要避免其反作用,最好僅在函數聲明時指定那個參數須要經過引用傳遞。 服務器

    參見引用的解釋。 函數

    Changelog for allow_call_time_pass_reference 版本  說明
    5.4.0  從 PHP 中移除。
    5.3.0  Emits an E_DEPRECATED level error.
    5.0.0  Deprecated, and generates an E_COMPILE_WARNING level error. spa


*********************************************************************************** code

PHP在升級到5.4版本的php可能會出現這種錯誤: htm

若是這樣使用函數(或者類)的話,會產生一個 PHP Fatal error:
foo(&$var);
實際上,這樣用法在php5.3中就會有提示,只是以前的僅僅會提示Deprecated而已。 文檔

[html] view plaincopy it

    // 正確寫法 
    function myFunc(&$arg) { do something... } 
      
    myFunc($var);//Call myFunc 
      
    //錯誤寫法 
    function myFunc($arg) { do something... } 
      
    myFunc(&$arg);//Call myFunc  io

 

***********************************************************************************

意思是調用時引用傳參已經被移除了,就是不能經過function(&$a)這種方式傳參調用函數.

解決方案:

查看你的php.ini配置文件,把其中的 allow_call_time_pass_reference參數調整爲true,並重啓服務器試試。

======================================
此外,之前的php代碼在升級到5.4版本的php可能會出現這種錯誤:

當咱們這樣使用函數(或者類)的話,會產生一個error:

foo(&$var);

實際上,這樣用原本就是錯的,只是以前的錯誤級別僅僅是Deprecated而已。

而正確的使用方法應該是在函數定義時:

function foo(& $var) {
   //other code
}

而在調用時直接傳參就好了: foo($var);

相關文章
相關標籤/搜索