古いCodeIgniterでPHPバージョンを上げたら Only variables should be passed by reference
特殊な環境で、古いCodeIgniter1.7.3+PHP 5.6という環境が存在していた。これをPHPのみ7系にあげたところ、以下のエラー。
A PHP Error was encountered
Severity: Notice
Message: Only variables should be passed by reference
Filename: codeigniter/Common.php
Line Number: 148
その場しのぎの解決方法
Common.phpの148行目を以下のように修正することで文法上のエラーは出なくなる。
//$objects[$class] =& instantiate_class(new $name());
$objects[$class] =new $name();
背景
この経緯としては、
$objects[$class] =& instantiate_class(new $name());
は、PHP 5.3 の厳密な標準警告を防ぐため、PHP 4 と PHP 5.3 コードを結合するために
$objects[$class] =& new $name();
と記述する必要があった模様で、これは下記のように書ける。ということで上記文法上のエラー解決に至る。
$objects[$class] =new $name();
結論
文法上のエラーは解決するも。表示されるべき画面に何も表示されない問題を解決できず(※ファイル名の先頭大文字問題とか?)。さっさとCodeIgniterのバージョンもあげましたとさ。