phpbb plus1.52中的一个BUG

昨天突然发现我用phpbb plus1.52的建的一个论坛出错了,表现为不管是前台还是后打开后都是一片空白。尝试查找原因>

首先再config.php中添加如下两行代码,强制显示错误资料,结果出了一堆的notice但没看到任何error,而正常页面还是没有输出。

error_reporting(E_ALL);
ini_set(‘display_errors’,1);

然后开始尝试使用跟踪错误的终极方法 > 手动断点跟踪大法(呵呵,这是我给起的名)。具体就是手动在代码中的不同位置添加die(‘-stop-‘),然后看看放在那个位置能正常输出’-stop-‘,那里不能,然后逐步找到异常终止的代码行,如果是include和function等还要跟踪进去,再重复以上步骤,找出出问题的根源。

通过这个方法,跟进了七层,才终于找出问题所在:系统生成的def_tree.php缓存代码有错误,在PHP 代码中直接出现了一行hmtl的注释,删除注释后,系统恢复正常。

系统在include这个cache文件是使用了@include(),屏蔽了错误的输出。不知道有没有什么为法能让@屏蔽的错误强制输出,如果可以,以后调试时可以省点事了。

对于为什么会在def_tree.php中出现错误代码,也找到了原因。在extreme style配置中有项为在 html 里加入 tpl 文件名,当其为打开状态时,系统会在所有使用模版的输出中添加html格式的注释来标明这个输出是使用的是模版,但phpbb plus 1.52错误的在缓存的PHP代码中也使用了这个注释,结果导致了一个parse error.暂的解决为法就是关掉这个选项,如果已经出错误了就只有手动去修改def_tree,def_auth等几缓存文件了。

这篇文章有 3 个评论

  1. 第 kometo页

    谢谢你推荐

发表评论