181

After the server PHP upgrade I am getting the following error with PHP Version 5.6.2 on 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

How can I fix this?

3 Answers 3

475

Edit filename: core/Common.php, line number: 257

Before

return $_config[0] =& $config; 

After

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

Update

Added by NikiC

In PHP assignment expressions always return the assigned value. So $_config[0] =& $config returns $config - but not the variable itself, but a copy of its value. And returning a reference to a temporary value wouldn't be particularly useful (changing it wouldn't do anything).

Update

This fix has been merged into CI 2.2.1 (https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3). It's better to upgrade rather than modifying core framework files.

7
  • 2
    hiya... kind to explain why do this? it works and i don't know why :p
    – GuyFreakz
    Feb 12, 2015 at 11:46
  • 4
    @GuyFreakz In PHP assignment expressions always return the assigned value. So $_config[0] =& $config returns $config - but not the variable itself, but a copy of its value. And returning a reference to a temporary value wouldn't be particularly useful (changing it wouldn't do anything).
    – NikiC
    Feb 14, 2015 at 10:42
  • yeah... that's good one! I have no idea why it could give that things out to be shown... :D
    – gumuruh
    Apr 9, 2015 at 9:12
  • 4
    this has been merged in ci 2.2.1 https://github.com/bcit-ci/CodeIgniter/commit/69b02d0f0bc46e914bed1604cfbd9bf74286b2e3. It's better to upgrade like @Chad has mentioned. Apr 23, 2015 at 18:18
  • 2
    I'm on an older version of codeigniter (2.0.2) when I try this fix on line 243 (that's where it shows up in my version) -- I get a php 500 error. Any idea how I can get this working?
    – JoeM05
    Feb 15, 2016 at 22:02
8

this has been modified in codeigniter 2.2.1...usually not best practice to modify core files, I would always check for updates and 2.2.1 came out in Jan 2015

1

It's not a better idea to override the core.common file of codeigniter. Because that's the more tested and system files....

I make a solution for this problem. In your ckeditor_helper.php file line- 65

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

Change this to-->

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

I think this is the best solution and then your problem notice will dissappear.

Not the answer you're looking for? Browse other questions tagged or ask your own question.