引用只能返回变量引用-Codeigniter


173

服务器PHP升级后,Apache 2.0上的PHP版本5.6.2出现以下错误

A PHP Error was encountered
Severity: Notice
Message: Only variable references should be returned by reference
Filename: core/Common.php
Line Number: 257

我怎样才能解决这个问题?

Answers:


450

编辑文件名:core / Common.php,行号:257

之前

return $_config[0] =& $config; 

$_config[0] =& $config;
return $_config[0]; 

更新资料

由NikiC添加

在PHP中,赋值表达式始终返回赋值。因此$ _config [0] =&$ config返回$ config-但不是变量本身,而是其值的副本。并且返回对临时值的引用不是特别有用(更改它不会做任何事情)。

更新资料

此修复程序已合并到CI 2.2.1(https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3)。最好升级而不是修改核心框架文件。


2
您好...可以解释为什么这样做?它有效,我不知道为什么:p
GuyFreakz

4
@GuyFreakz在PHP中赋值表达式总是返回分配的。因此$_config[0] =& $config返回$config-但不是变量本身,而是其值的副本。并且返回对临时值的引用并不是特别有用(更改它不会做任何事情)。
NikiC

是的...很好!我不知道为什么它可以让事情显示出来...:D
gumuruh 2015年

4
此内容已在ci 2.2.1中合并https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3。最好像@Chad提到的那样进行升级。
Syakur Ra​​hman 2015年

1
当我在第243行尝试此修复程序时,我使用的是旧版本的Codeigniter(2.0.2)(这是我的版本中显示的位置)–我收到php 500错误。知道如何使它起作用吗?
JoeM05 '16

8

这已在codeigniter 2.2.1中进行了修改...通常不是修改核心文件的最佳实践,我将始终检查更新,并且2.2.1于2015年1月发布


1

覆盖codeigniter的core.common文件不是一个更好的主意。因为那是经过更多测试的系统文件。

我为这个问题提供了解决方案。在您的ckeditor_helper.php文件 行中-65

if($k !== end (array_keys($data['config']))) {
       $return .= ",";
}

更改为->

 $segment = array_keys($data['config']);
    if($k !== end($segment)) {
           $return .= ",";
    }

我认为这是最好的解决方案,然后您的问题通知就会消失。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.