程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Fatal error: Call-time pass-by-reference has been removed,passbyreference

Fatal error: Call-time pass-by-reference has been removed,passbyreference

編輯:關於PHP編程

Fatal error: Call-time pass-by-reference has been removed,passbyreference


 下面的代碼報錯:Fatal error: Call-time pass-by-reference has been removed

   function myFunc($arg) { do something... }

   myFunc(&$arg);//Call myFunc

   function myFunc(&$arg) { do something... }

   myFunc(&$arg);//Call myFunc

 

錯誤分析:    
 allow_call_time_pass_reference boolean
    在函數調用時參數被按照引用傳遞時是否發出警告。此方法已不被贊成並在 PHP/Zend 未來的版本中很可能不再支持。鼓勵使用的方法是在函數定義中指定哪些參數應該用引用傳遞。鼓勵大家嘗試關閉此選項並確保腳本能夠正常運行,以確保該腳本也能在未來的版本中運行(每次使用此特性都會收到一條警告)。

    在函數調用時通過引用傳遞參數是不推薦的,因為它影響到了代碼的整潔。如果函數的參數沒有聲明作為引用傳遞,函數可以通過未寫入文檔的方法修改其參數。要避免其副作用,最好僅在函數聲明時指定那個參數需要通過引用傳遞。

    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.



函數調用時引用傳參已經被移除了,就是不能通過function(&$a)這種方式傳參調用函數.
解決方案:
查看你的php.ini配置文件,把其中的 allow_call_time_pass_reference參數調整為true,並重啟服務器試試。

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

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

myFunc(&$arg);//Call myFunc

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

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

function myFunc(&$arg) { do something... }

而在調用時直接傳參就行了: 

myFunc($var);//Call myFunc




Fatal error: Call-time pass-by-reference has been removed in D:\EasyPHP\www\Paixd\DailyAuction\Prcie

意思是調用時引用傳參已經被移除了,就是不能通過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);
 

bugfree登陸後出現一行字

到有問題的行數,把&$this等變量的&去掉就可以了,然後重啟xampp或bugfree;
或修改php.ini裡的allow_call_time_pass_reference=On
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved