参照によって返されるのは変数参照のみ-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

どうすれば修正できますか?

回答:


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
hiya ...なぜこれをするのか説明してくれる?それは機能し、理由はわかりません:p
GuyFreakz

4
@GuyFreakz PHPでは、割り当て式は常に割り当てられた値を返します。つまり、変数自体ではなく、その値のコピーを$_config[0] =& $config返し$configます。また、一時的な値への参照を返すことは特に便利ではありません(変更しても何も起こりません)。
NikiC、2015

ええ...それはいいことです!なぜそれが表示されるようになるのかわからない...:D
gumuruh

4
これはci 2.2.1で統合されましたhttps://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3。@Chadが述べたようにアップグレードすることをお勧めします。
Syakur Ra​​hman、2015

1
古いバージョンのcodeigniter(2.0.2)を使用していますが、243行目でこの修正を実行すると(私のバージョンではこの問題が発生します)、php 500エラーが発生します。どうすればこれを機能させることができますか?
JoeM05 2016

8

これはcodeigniter 2.2.1で変更されています...通常、コアファイルを変更するのはベストプラクティスではありません。更新を常にチェックし、2015年1月に2.2.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 .= ",";
    }

これが最善の解決策だと思うので、問題の通知は消えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.