Tylko odwołania do zmiennych powinny być zwracane przez odniesienie - Codeigniter

173

Po aktualizacji PHP serwera otrzymuję następujący błąd z PHP w wersji 5.6.2 na 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

Jak mogę to naprawić?

Techie
źródło

Odpowiedzi:

450

Edytuj nazwę pliku: core / Common.php, numer wiersza: 257

Przed

return $_config[0] =& $config; 

Po

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

Aktualizacja

Dodane przez NikiC

W PHP wyrażenia przypisania zawsze zwracają przypisaną wartość. Więc $ _config [0] = & $ config zwraca $ config - ale nie samą zmienną, ale kopię jej wartości. A zwrócenie odniesienia do wartości tymczasowej nie byłoby szczególnie przydatne (zmiana tego nic nie dałaby).

Aktualizacja

Ta poprawka została połączona z CI 2.2.1 ( https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3 ). Lepiej jest aktualizować niż modyfikować podstawowe pliki frameworka.

Techie
źródło
2
cześć ... uprzejmie wyjaśnić, dlaczego to robisz? to działa i nie wiem dlaczego: p
GuyFreakz,
4
@GuyFreakz W PHP wyrażenia przypisania zawsze zwracają przypisaną wartość . Więc $_config[0] =& $configzwraca $config- ale nie samą zmienną, ale kopię jej wartości. A zwrócenie odniesienia do wartości tymczasowej nie byłoby szczególnie przydatne (zmiana tego nic nie dałaby).
NikiC
tak ... to jest dobre! Nie mam pojęcia, dlaczego może to dać do pokazania ...: D
gumuruh
4
zostało to włączone do CI 2.2.1 https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3. Lepiej uaktualnić, jak wspomniał @Chad.
Syakur Rahman
1
Jestem na starszej wersji codeignitera (2.0.2), kiedy próbuję to naprawić w linii 243 (tam pojawia się w mojej wersji) - pojawia się błąd php 500. Masz jakiś pomysł, jak mogę to uruchomić?
JoeM05
8

zostało to zmodyfikowane w codeigniter 2.2.1 ... zwykle nie jest to najlepsza praktyka przy modyfikowaniu podstawowych plików, zawsze sprawdzałbym dostępność aktualizacji i 2.2.1 wyszedł w styczniu 2015

Czad
źródło
1

Nie jest lepszym pomysłem zastąpienie pliku core.common programu codeigniter. Ponieważ to bardziej przetestowane i systemowe pliki ...

Rozwiązuję ten problem. W linii pliku ckeditor_helper.php - 65

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

Zmień to na ->

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

Myślę, że to najlepsze rozwiązanie, a wtedy informacja o problemie zniknie.

Maniruzzaman Akash
źródło