web-dev-qa-db-ja.com

参照によって返されるべき変数参照のみ - Codeigniter

サーバ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

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

155
Techie

ファイル名を編集:core/Common.php、行番号:257

return $_config[0] =& $config; 

後に

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

更新

NikiCが追加した

In PHP代入式は常に代入値を返します。そのため、$ _config [0] =&$ configは$ configを返します - 変数自体ではなく、その値のコピーです。そして、一時的な値への参照を返すことは特に役に立ちません(それを変更しても何もしません)。

更新

この修正はCI 2.2.1( https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3 )にマージされました。コアフレームワークファイルを変更するよりもアップグレードするほうが賢明です。

420
Techie

Core/Common.phpの行番号を257に変更してください。

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

これはcodeigniter 2.2.1で修正されました...通常コアファイルを修正するためのベストプラクティスではありません、私は常にアップデートをチェックし、2.2.1は2015年1月に出ました

7
Chad

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 .= ",";
    }

私はこれが最善の解決策だと思います、それからあなたの問題の通知は消えます。

1