PHP Warning: Illegal string offset 'special'论坛发帖报错解决方法

2017-11-29 20:29:00 点击Discuz论坛发帖后出现PHP Warning: Illegal string offset 'special' in报错警告提示的解决方法

报错内容:

PHP Warning: Illegal string offset 'special' in E:\xxx...\wwwroot\bbs\forumdata\templates\1_post_newthread.tpl.php on line 380
PHP Warning: Illegal string offset 'special' in E:\xxx...\wwwroot\bbs\forumdata\templates\1_post_newthread.tpl.php on line 382

原因:升级PHP版本后出现报错问题
论坛版本:Discuz! 6.1.0

解决方法:

找到\bbs\forumdata\templates\1_post_newthread.tpl.php

打开1_post_newthread.tpl.php文件,最好使用DW软件进行编辑,避免记事本编辑出现网页乱码问题。

找到378行

将以下代码: 

<? if($special == 1) { ?>
背景资料
<? } elseif($thread['special'] == 2 && $isfirstpost) { ?>
柜台商品介绍
<? } elseif($thread['special'] == 2 && $special == 2) { ?>
商品描述
<? } elseif($special == 3 && $allowpostreward) { ?>
补充资料
<? } elseif($special == 4 && $allowpostactivity) { ?>
活动说明
<? } elseif($special == 5) { ?>
<? if($allowpostdebate && $isfirstpost || $action == 'newthread') { ?>
背景资料
<? } else { ?>
立场
<? } ?>
<? } else { ?>
内容
<? } ?>

修改为

<? if(is_array($val))
{if($special == 1) { ?>
背景资料
<? } elseif($thread['special'] == 2 && $isfirstpost) { ?>
柜台商品介绍
<? } elseif($thread['special'] == 2 && $special == 2) { ?>
商品描述
<? } elseif($special == 3 && $allowpostreward) { ?>
补充资料
<? } elseif($special == 4 && $allowpostactivity) { ?>
活动说明
<? } elseif($special == 5) { ?>
<? if($allowpostdebate && $isfirstpost || $action == 'newthread') { ?>
背景资料
<? } else { ?>
立场
<? } ?>
<? } else { ?>
内容
<? }} ?>

修改截图:

论坛发帖报错解决代码修改方法
代码修改方法

其实解决方法:

代码前后添加if(is_array($val))
{
原来代码
}

更新