Somente referências variáveis ​​devem ser retornadas por referência - Codeigniter

173

Após a atualização do servidor PHP, estou recebendo o seguinte erro com o PHP Versão 5.6.2 no 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

Como posso consertar isso?

Techie
fonte

Respostas:

450

Editar nome do arquivo: core / Common.php, número da linha: 257

Antes

return $_config[0] =& $config; 

Depois de

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

Atualizar

Adicionado por NikiC

Nas expressões de atribuição do PHP sempre retorne o valor atribuído. Então $ _config [0] = & $ config retorna $ config - mas não a variável em si, mas uma cópia do seu valor. E retornar uma referência a um valor temporário não seria particularmente útil (alterá-lo não faria nada).

Atualizar

Essa correção foi mesclada no IC 2.2.1 ( https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3 ). É melhor atualizar em vez de modificar os arquivos da estrutura principal.

Techie
fonte
2
hiya ... tipo de explicar por que fazer isso? ele funciona e eu não sei por que: p
GuyFreakz
4
@GuyFreakz No PHP, as expressões de atribuição sempre retornam o valor atribuído . Então $_config[0] =& $configretorna $config- mas não a variável em si, mas uma cópia do seu valor. E retornar uma referência a um valor temporário não seria particularmente útil (alterá-lo não faria nada).
NikiC 14/02
sim ... essa é boa! Eu não tenho idéia por que ele poderia dar que as coisas para ser mostrado ...: D
gumuruh
4
isso foi mesclado na ci 2.2.1 https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3. É melhor atualizar como o @Chad mencionou.
21415 Syakur Rahman
1
Estou em uma versão mais antiga do codeigniter (2.0.2) quando tento esta correção na linha 243 (é aí que aparece na minha versão) - recebo um erro do php 500. Alguma idéia de como posso fazer isso funcionar?
21816 JoeM05
8

isso foi modificado no codeigniter 2.2.1 ... geralmente não é uma prática recomendada para modificar arquivos principais, eu sempre procurava atualizações e a 2.2.1 foi lançada em janeiro de 2015

Chade
fonte
1

Não é uma idéia melhor substituir o arquivo core.common do codeigniter. Porque esses são os arquivos mais testados e do sistema ....

Eu faço uma solução para este problema. No seu arquivo ckeditor_helper.php, linha 65

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

Mude para ->

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

Penso que esta é a melhor solução e o seu aviso de problema desaparecerá.

Maniruzzaman Akash
fonte