Solo las referencias variables deben ser devueltas por referencia - Codeigniter

173

Después de la actualización del servidor PHP, recibo el siguiente error con la versión 5.6.2 de PHP en 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

¿Cómo puedo arreglar esto?

Techie
fuente

Respuestas:

450

Editar nombre de archivo: core / Common.php, número de línea: 257

antes de

return $_config[0] =& $config; 

Después

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

Actualizar

Añadido por NikiC

En PHP, las expresiones de asignación siempre devuelven el valor asignado. Entonces $ _config [0] = & $ config devuelve $ config, pero no la variable en sí, sino una copia de su valor. Y devolver una referencia a un valor temporal no sería particularmente útil (cambiarlo no haría nada).

Actualizar

Esta solución se ha fusionado en CI 2.2.1 ( https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3 ). Es mejor actualizar en lugar de modificar los archivos del marco central.

Techie
fuente
2
Hola ... amable de explicar por qué hacer esto? funciona y no sé por qué: p
GuyFreakz
44
@GuyFreakz En PHP, las expresiones de asignación siempre devuelven el valor asignado . Entonces $_config[0] =& $configdevuelve $config, pero no la variable en sí, sino una copia de su valor. Y devolver una referencia a un valor temporal no sería particularmente útil (cambiarlo no haría nada).
NikiC
si ... esa es buena! No tengo idea de por qué podría dar a conocer esas cosas ...: D
gumuruh
44
esto se ha fusionado en ci 2.2.1 https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3. Es mejor actualizar como @Chad ha mencionado.
Syakur Rahman
1
Estoy en una versión anterior de codeigniter (2.0.2) cuando intento esta solución en la línea 243 (ahí es donde aparece en mi versión): aparece un error de php 500. ¿Alguna idea de cómo puedo hacer que esto funcione?
JoeM05
8

esto se ha modificado en codeigniter 2.2.1 ... por lo general no es la mejor práctica para modificar archivos principales, siempre verificaría las actualizaciones y 2.2.1 salió en enero de 2015

Chad
fuente
1

No es una mejor idea anular el archivo core.common de codeigniter. Porque esos son los archivos más probados y del sistema ...

Hago una solución para este problema. En su línea de archivo ckeditor_helper.php- 65

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

Cambie esto a ->

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

Creo que esta es la mejor solución y su aviso de problema desaparecerá.

Maniruzzaman Akash
fuente