Nur variable Referenzen sollten als Referenz zurückgegeben werden - Codeigniter


173

Nach dem Server-PHP-Upgrade wird mit PHP Version 5.6.2 unter Apache 2.0 der folgende Fehler angezeigt

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

Wie kann ich das beheben?

Antworten:


450

Dateiname bearbeiten: core / Common.php, Zeilennummer: 257

Vor

return $_config[0] =& $config; 

Nach dem

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

Aktualisieren

Hinzugefügt von NikiC

In PHP geben Zuweisungsausdrücke immer den zugewiesenen Wert zurück. $ _Config [0] = & $ config gibt also $ config zurück - aber nicht die Variable selbst, sondern eine Kopie ihres Werts. Und die Rückgabe eines Verweises auf einen temporären Wert wäre nicht besonders nützlich (eine Änderung würde nichts bewirken).

Aktualisieren

Dieser Fix wurde in CI 2.2.1 ( https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3 ) zusammengeführt. Es ist besser, ein Upgrade durchzuführen, als die Kern-Framework-Dateien zu ändern.


2
hiya ... nett zu erklären warum das so ist? es funktioniert und ich weiß nicht warum: p
GuyFreakz

4
@GuyFreakz In PHP geben Zuweisungsausdrücke immer den zugewiesenen Wert zurück . Gibt also $_config[0] =& $configzurück $config- aber nicht die Variable selbst, sondern eine Kopie ihres Wertes. Und die Rückgabe eines Verweises auf einen temporären Wert wäre nicht besonders nützlich (eine Änderung würde nichts bewirken).
NikiC

Ja ... das ist gut! Ich habe keine Ahnung, warum es geben könnte, dass Dinge gezeigt werden ...: D
gumuruh

4
Dies wurde in ci 2.2.1 zusammengeführt https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3. Es ist besser, ein Upgrade durchzuführen, wie @Chad erwähnt hat.
Syakur Rahman

1
Ich bin auf einer älteren Version von Codeigniter (2.0.2), wenn ich dieses Update in Zeile 243 versuche (dort wird es in meiner Version angezeigt) - ich erhalte einen PHP 500-Fehler. Irgendeine Idee, wie ich das zum Laufen bringen kann?
JoeM05

8

Dies wurde in Codeigniter 2.2.1 geändert. Normalerweise ist dies keine bewährte Methode zum Ändern von Kerndateien. Ich habe immer nach Updates gesucht und 2.2.1 wurde im Januar 2015 veröffentlicht


1

Es ist keine bessere Idee, die Datei core.common von codeigniter zu überschreiben. Weil das die mehr getesteten und Systemdateien sind ....

Ich mache eine Lösung für dieses Problem. In Ihrer ckeditor_helper.php-Datei Zeile 65

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

Ändern Sie dies auf ->

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

Ich denke, dies ist die beste Lösung, und dann wird Ihre Problemmeldung verschwinden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.