IT技术互动交流平台

关于zencart 1.39 myDEBUG错误记录的修正

作者:kam  发布日期:2013-03-04 20:52:39

总所周知,zencart根目录下边有一个目录“cache”,这是一个zencart的缓存目录,里面有2种不同的命名文件,分别是以“myDEBUG”和“zc_cc”开头的,尾巴很长的文件,其中“myDEBUG”对应的后缀为“.log”,而“zc_cc”对应的后缀为“.sql”,单从这2种文件的后缀不难看出,“.log”的文件为zencart的日志,而“.sql”为sql代码执行文件,由于“.sql”是zencart特有的功能,可以缓存数据库执行记录,这样同样的读取数据就不再需要再次访问数据库,而直接访问这个缓存的文件即可,大大提高了访问的速度。

但是现在我们讨论的是以后缀“.log”的文件,那刚才所说的这些文件所在的目录,可以看下图。

 


 

打开这个后缀为“.log”的文件,发现里面记录有这样的信息:

[03-Mar-2013 14:25:47] PHP Warning:  Missing argument 2 for zen_back_link(), called in E:PHPvhostszongheincludestemplateslite_greytemplatestpl_advanced_search_default.php on line 64 and defined in E:PHPvhostszongheincludesfunctionsfunctions_general.php on line 1003这里记录的是一个PHP的警告信息,由此我们可以看上图的文件名,“DEBUG”就是记录zencart执行过程中出现的“bug”,再看上面红色错误提示文字,这里提示了 E:PHPvhostszongheincludestemplateslite_greytemplatestpl_advanced_search_default.php 文件的第64行,以及对应的 E:PHPvhostszongheincludesfunctionsfunctions_general.php 第1003行定义有问题。

我们先来打开文件 functions_general.php 第1003行,代码如下

function zen_back_link($link_only = false,$link_other) {  

这里是定义一个返回链接的函数,然后我们再打开文件 tpl_advanced_search_default.php 第64行,发现这里对应的代码为

<div class="buttonRow back"><?php echo zen_back_link() . zen_image_button(BUTTON_IMAGE_BACK, BUTTON_BACK_ALT) . '</a>'; ?></div></td>  

这里调用了这个函数,由于该函数定义有2个参数,其中第一个默认为“false”,但是第二个没有指定,因此在调用该函数的时候,应该是至少要有一个参数的,但是实际上在调用该函数的过程中,没有传递参数,因此虽然可以执行,但是会报错。

发现了这个问题后,就容易解决了。经过分析,发现在zen_back_link()这个函数中,$link_other没有参与实际的过程,而是作为一个结果输出,这里我们只需要把该函数修改为以下就可以了

function zen_back_link($link_only = false,$link_other = '') {  

也就是指定一个默认为空的值给这个参数,保存,然后清空“cache”目录,再次访问出错的这个页面,发现“myDEBUG”文件不再生成了,也就是说这个问题解决了。www.it165.net

其实不仅仅是上文提到的 tpl_advanced_search_default.php 这个文件,我也不知道是否是zencart 1.39的一个bug,所有反正有返回按钮的页面,都会报错,就如特价页面,只要页面底部有返回按钮,就会报错。问题不单单是报错,错误记录日志还会在每访问一次页面的时候生成一个日志文件,当网店访问量大的时候,这些日志文件就会成为累赘、垃圾,所以建议各位如果发现有类似问题,尽快解决。或许在后续的1.50的版本中,这个问题已经得到解决,但是1.39上我是发现了这个问题的。

关于zencart更多的使用技巧,请关注我博客的其他文章。

 

Tag标签: zencart   myDEBUG  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规