Discuz游客访问贴子报错的解决办法

我是PHP开发学习门户站长,在的论坛社区创建初期老是遇到“游客访问每个贴子都报错”问题

游客访问具体帖子内容老是出错,google和度娘都找了N遍,查了N天,试了各种所谓的解决办法,都不管用,错误还是迟迟没有解决
后来自己去查找错误代码,修改bug,最终解决。

论坛安装好以后,其他都正常,就是游客浏览帖子会出现如下的错误,游客访问首页和列表页都是正常的。
登录帐号以后,所有都正常。

错误如下图所示:

出错代码位置:source/class/discuz/discuz_base.php

Bug代码:

 public function __set($name, $value) {
 $setter='set'.$name;
 if(method_exists($this,$setter)) {
 return $this->$setter($value);
 } elseif($this->canGetProperty($name)) {
 throw new Exception('The property "'.get_class($this).'->'.$name.'" is readonly');
 } else {
 throw new Exception('The property "'.get_class($this).'->'.$name.'" is not defined');
 }
 }

修复代码:

public function __set($name, $value) {
 $setter='set'.$name;
 if(method_exists($this,$setter)) {
 return $this->$setter($value);
 } elseif($this->canGetProperty($name)) {
 throw new Exception('The property "'.get_class($this).'->'.$name.'" is readonly');
 } else {
 $this->$name = $value;
 return ;
 throw new Exception('The property "'.get_class($this).'->'.$name.'" is not defined');
 }
}

强烈推荐大家看下

php面向对象__get(),__set()的使用原理:http://www.phpthinking.com/archives/618

By phpthinking.com

打赏此文

如果您觉得本站的内容对您有所帮助,您可以扫描下面的二维码小额支付请我喝杯茶,感谢!打赏记录
支付宝
微信
承诺:凡打赏捐助的朋友,留言备注自己的邮箱,在打赏捐助时间点的6个月内,本站会每周邮件推送原创专业技术博文,供大家学习和参考!

留下评论

All fields marked (*) are required