Только ссылки на переменные должны быть возвращены по ссылке - Codeigniter

173

После обновления PHP сервера я получаю следующую ошибку с версией PHP 5.6.2 на 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

Как я могу это исправить?

Технарь
источник

Ответы:

450

Изменить имя файла: core / Common.php, номер строки: 257

Перед

return $_config[0] =& $config; 

После

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

Обновить

Добавлено NikiC

В PHP выражения присваивания всегда возвращают присвоенное значение. Таким образом, $ _config [0] = & $ config возвращает $ config - но не саму переменную, а копию ее значения. И возвращение ссылки на временное значение не было бы особенно полезным (изменение не будет ничего делать).

Обновить

Это исправление было объединено с CI 2.2.1 ( https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3 ). Лучше обновить, чем модифицировать файлы ядра.

Технарь
источник
2
хия ... любезно объяснить, почему это сделать? это работает, и я не знаю почему: p
GuyFreakz
4
@GuyFreakz В PHP выражения присваивания всегда возвращают назначенное значение . Так $_config[0] =& $configвозвращает $config- но не сама переменная, а копия ее значения. И возвращение ссылки на временное значение не было бы особенно полезным (изменение не будет ничего делать).
NikiC
да ... это хорошо! Я понятия не имею, почему это могло показать эти вещи ...: D
gumuruh
4
это было объединено в п. 2.2.1 https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3. Лучше обновить, как упомянул @Chad.
Сякур Рахман
1
Я использую более старую версию codeigniter (2.0.2), когда я пытаюсь это исправить в строке 243 (вот где оно отображается в моей версии) - я получаю ошибку php 500. Любая идея, как я могу заставить это работать?
JoeM05
8

это было изменено в codeigniter 2.2.1 ... обычно это не лучшая практика для модификации основных файлов, я всегда проверял бы наличие обновлений, и 2.2.1 вышел в январе 2015

Чад
источник
1

Это не лучшая идея переопределить файл core.common codeigniter. Потому что это более проверенные и системные файлы ....

Я делаю решение этой проблемы. В вашей строке ckeditor_helper.php - 65

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

Измените это на ->

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

Я думаю, что это лучшее решение, и тогда ваше уведомление о проблеме исчезнет.

Манируззаман Акаш
источник