记录一处discuz不兼容php7导致UCenter通信失败

2017-1-27 22:47:15

dz版本,discuz! F1.0
UCenter的通信测试的实质,是一个script脚本,调用地址是
/uc_server/admin.php?m=app&a=ping&inajax=1&url=https%3A%2F%2Fexample.com&ip=&appid=1&random=1230195151&sid=sdsfsddfd
直接访问就能看到报错

此处的代码是

echo $uc_note->$get['action']($get, $post);

而php5到php7有一个breaking change和类方法动态调用有关

http://php.net/manual/zh/migration70.incompatible.php

php5和php7对这段代码的解释顺序是不同的,所以导致了dz在php7下这里运行出错,修改也很简单,参照样例,这里修改为

echo $uc_note->{$get['action']}($get, $post);

就可以让php7用无歧义的方式解析成php5的结果,于是就能通信成功了