Solo i riferimenti alle variabili devono essere restituiti per riferimento - Codeigniter


173

Dopo l'aggiornamento del server PHP ricevo il seguente errore con la versione 5.6.2 di PHP su 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

Come posso risolvere questo problema?

Risposte:


450

Modifica il nome del file: core / Common.php, numero di riga: 257

Prima

return $_config[0] =& $config; 

Dopo

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

Aggiornare

Aggiunto da NikiC

In PHP le espressioni di assegnazione restituiscono sempre il valore assegnato. Quindi $ _config [0] = & $ config restituisce $ config - ma non la variabile stessa, ma una copia del suo valore. E restituire un riferimento a un valore temporaneo non sarebbe particolarmente utile (cambiarlo non farebbe nulla).

Aggiornare

Questa correzione è stata unita in CI 2.2.1 ( https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3 ). È meglio aggiornare anziché modificare i file del framework di base.


2
hiya ... gentile a spiegare perché farlo? funziona e non so perché: p
GuyFreakz,

4
@GuyFreakz In PHP le espressioni di assegnazione restituiscono sempre il valore assegnato . Quindi $_config[0] =& $configritorna $config- ma non la variabile stessa, ma una copia del suo valore. E restituire un riferimento a un valore temporaneo non sarebbe particolarmente utile (cambiarlo non farebbe nulla).
NikiC,

si ... va bene! Non ho idea del perché potrebbe dare che le cose vengano mostrate ...: D
gumuruh,

4
questo è stato unito in ci 2.2.1 https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3. È meglio aggiornare come ha menzionato @Chad.
Syakur Rahman,

1
Sono su una versione precedente di codeigniter (2.0.2) quando provo questa correzione sulla linea 243 (è lì che appare nella mia versione) - Ottengo un errore php 500. Qualche idea su come posso farlo funzionare?
JoeM05,

8

questo è stato modificato in codeigniter 2.2.1 ... di solito non è la migliore pratica per modificare i file core, vorrei sempre verificare la presenza di aggiornamenti e 2.2.1 è uscito a gennaio 2015


1

Non è un'idea migliore sovrascrivere il file core.common di codeigniter. Perché quelli sono i file più testati e di sistema ....

Faccio una soluzione per questo problema. Nel tuo file ckeditor_helper.php linea 65

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

Cambia questo in ->

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

Penso che questa sia la soluzione migliore e quindi il tuo avviso sul problema scompare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.