前几日,使用yum方式安装了一个LAMP环境,环境搭好之后,把网站代码放到这台服务器上后,登录后台后报错:
Fatal error: Call-time pass-by-reference has been removed in...
意思是调用时引用传参已经被移除了。
于是检查了一下代码,发现function.php里有类似这种test(&$a)写法的函数,仔细辨认了一下,是静态生成的一个函数,把这个函数删掉,网站即恢复正常,后来终于找到原因:
PHP升级到5.4版本以后,不能通过test(&$a)这种方式传参调用函数。
其实在调用是test(&$a)本来就是错误的方式,只是PHP5.4之前错误级别仅仅是Deprecated,正确的方法是在定义方法时:
function test(&$a)加上引用符号&即可,在调用的时候直接调用test($a);
解决方案:
方法一、查看你的php.ini配置文件,把其中的 allow_call_time_pass_reference参数调整为true,并重启服务器试试。
方法二:修改PHP程序,在函数定义时:
function test(& $var) {
//other code
}
而在调用时直接传参就行了: test($var);