preg_replace 使用的超過(guò)了php5.2默認(rèn)允許的字節(jié),也就是pcre.backtrack_limit和pcre.recursion_limit的大小的問(wèn)題。
Discuz!6.0.0正式版程序發(fā)布以來(lái),大家都熱火朝天的升級(jí)中,但是部分插件在6.0下出現(xiàn)了問(wèn)題
比如http://www.discuz.net/viewthread.php?tid=559133這個(gè)銀行插件
在php為5.2.0及以上的環(huán)境下安裝以后會(huì)出現(xiàn)白屏的問(wèn)題
從Discuz!用戶(hù)的角度考慮,我們需要去協(xié)助插件作者解決這個(gè)問(wèn)題
下面說(shuō)下我的解決過(guò)程,希望能給大家一些建議吧
第一:此插件在5.5的情況下可以正常運(yùn)行,但是6.0下就白屏了
Discuz!6.0為了增加模板緩存文件的可讀性,增加了緩存文件的縮進(jìn),而確實(shí)修改過(guò)部分templates.func.php的模板處理部分,莫非是這個(gè)原因?開(kāi)始我初步確定是這里的問(wèn)題,因?yàn)橛?.5的部分代碼替換修改過(guò)的代碼,就表現(xiàn)正常,但是很郁悶的沒(méi)有找到原因
第二步:懷疑是bank.htm這個(gè)模板書(shū)寫(xiě)格式的問(wèn)題,于是我很郁悶的開(kāi)始分析模板,說(shuō)實(shí)話(huà),模板大了分析起來(lái)真的很頭疼。結(jié)果顯然又沒(méi)有找到原因。比較郁悶的說(shuō)
第二步:然后發(fā)現(xiàn)將此模板拆分以后,就正常執(zhí)行了,這時(shí)候我初步懷疑是不是正則匹配的bug在大數(shù)據(jù)量的時(shí)候出現(xiàn)了錯(cuò)誤,于是我就上bugs.php.net開(kāi)始搜索了http://bugs.php.net/search.php?c … ace&x=3&y=5在這里找啊找啊找,于是終于找到了這里http://bugs.php.net/bug.php?id=39405,突然間發(fā)現(xiàn)居然是5.2配置的問(wèn)題,在調(diào)整大pcre.backtrack_limit和pcre.recursion_limit之后問(wèn)題解決
據(jù)說(shuō)將pcre.backtrack_limit=-1 in php.ini
就是無(wú)限制
新聞熱點(diǎn)
疑難解答