phpcms网站后台更新栏目缓存后报错:
PHP has encountered a Stack overflow
解决方法:
1、首先这个问题是出在数据库表上,所以登陆空间的 phpmyadmin 去管理数据库表
2、执行sql语句:SELECT * FROM v9_category WHERE catid=parentid (注意,v9_是表前缀,记得修改成自己的表前缀)
3、正常情况下这个搜索是查询不到记录的,如果查询到记录,说明该记录有问题
4、解决方法把该记录的:parentid的值修改为0即可
原因剖析:
v9_category 表中存在,「分类id(catid)」 等于「父级分类id(parentid)」的记录,导致程序构造树形分类据时,出现了死循环,导致栈内存溢出。
{pc:content action="category" catid="0" num="25" siteid="$siteid" order="listorder ASC"} <a href="{siteurl($siteid)}">首页</a> {loop $data $r}<!-- 一级栏目循环开始 --> <a href="{$r[url]}">{$r[catname]}</a> {if $r[arrchildid]} <!--是否有子栏目--> {pc:content action="category" catid="$r[catid]" num="15" siteid="$siteid" order="listorder ASC" return="data2"} {loop $data2 $v}<!--子栏目循环开始--> <a href="{$v[url]}">{$v[catname]}</a> {/loop}<!--子栏目循环结束--> {/pc} {/if} {/loop}<!-- 一级栏目循环结束--> {/pc}