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

130

После обновления 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

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

Теги:
codeigniter
apache2
codeigniter-2

4 ответа

359
Лучший ответ

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

Перед

return $_config[0] =& $config; 

После

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

Update

Добавил (а) NikiC

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

Update

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

  • 2
    хия ... любезно объяснить, почему это сделать? это работает, и я не знаю почему: p
  • 4
    @GuyFreakz В выражениях присваивания PHP всегда возвращают назначенное значение . Таким образом, $_config[0] =& $config возвращает $config - но не саму переменную, а копию ее значения. И возвращение ссылки на временное значение не было бы особенно полезным (изменение не будет ничего делать).
Показать ещё 10 комментариев
6

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

3

Изменить номер строки ядра /Common.php: код 257 с

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

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

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

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

Измените это на →

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню