Seules les références de variables doivent être renvoyées par référence - Codeigniter


173

Après la mise à niveau du serveur PHP, j'obtiens l'erreur suivante avec PHP version 5.6.2 sur Apache 2.0

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

Comment puis-je réparer cela?

Réponses:


450

Modifier le nom du fichier: core / Common.php, numéro de ligne: 257

Avant

return $_config[0] =& $config; 

Après

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

Mettre à jour

Ajouté par NikiC

En PHP, les expressions d'affectation renvoient toujours la valeur affectée. Donc $ _config [0] = & $ config renvoie $ config - mais pas la variable elle-même, mais une copie de sa valeur. Et renvoyer une référence à une valeur temporaire ne serait pas particulièrement utile (la modifier ne ferait rien).

Mettre à jour

Ce correctif a été fusionné dans CI 2.2.1 ( https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3 ). Il est préférable de mettre à niveau plutôt que de modifier les fichiers du framework de base.


2
hiya ... genre d'expliquer pourquoi faire ça? ça marche et je ne sais pas pourquoi: p
GuyFreakz

4
@GuyFreakz En PHP, les expressions d'affectation renvoient toujours la valeur attribuée . Donc $_config[0] =& $configrenvoie $config- mais pas la variable elle-même, mais une copie de sa valeur. Et renvoyer une référence à une valeur temporaire ne serait pas particulièrement utile (la modifier ne ferait rien).
NikiC

ouais ... c'est bon! Je ne sais pas pourquoi cela pourrait donner que des choses soient montrées ...: D
gumuruh

4
cela a été fusionné dans ci 2.2.1 https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3. Il vaut mieux mettre à niveau comme @Chad l'a mentionné.
Syakur Rahman

1
Je suis sur une ancienne version de codeigniter (2.0.2) lorsque j'essaye ce correctif sur la ligne 243 (c'est là qu'il apparaît dans ma version) - j'obtiens une erreur php 500. Une idée de la façon dont je peux faire fonctionner cela?
JoeM05

8

cela a été modifié dans codeigniter 2.2.1 ... généralement pas la meilleure pratique pour modifier les fichiers core, je vérifierais toujours les mises à jour et 2.2.1 est sorti en janvier 2015


1

Ce n'est pas une meilleure idée de remplacer le fichier core.common de codeigniter. Parce que ce sont les fichiers système les plus testés ...

Je fais une solution à ce problème. Dans votre ligne de fichier ckeditor_helper.php- 65

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

Remplacez ceci par ->

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

Je pense que c'est la meilleure solution, puis votre avis de problème disparaîtra.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.