當將 CodeIgniter 專案遷移至 PHP 5.6 環境時,常會遇到以下錯誤提示:
A PHP Error was encountered Severity: Notice Message: Only variable references should be returned by reference Filename: core/Common.php Line Number: 257
PHP 5.6 加強了對「以引用返回值」的語法檢查。原始代碼嘗試直接返回一個引用賦值表達式的結果,這在新版本中被視為不合規範的寫法。具體問題出在 core/Common.php 第 257 行:
return $_config[0] =& $config;
將操作拆分為兩步:先進行引用賦值,再返回變量本身。修改後的代碼如下:
$_config[0] =& $config; return $_config[0];
這種寫法符合 PHP 5.6+ 的語法規範:=& 建立變量引用關係後,$_config[0] 本身就是一個變量,直接返回它即可滿足「只能返回變量引用」的要求。這不僅修復了兼容性問題,也使代碼邏輯更清晰。
修改後請務必測試配置加載功能,確保 $this->config->item() 等方法正常工作。