Magento页面空白,如何打开错误报告调试的方法

Magento页面一片空白 没显示什么东西,无法判断是否程序错误,所以要把错误显示打开使之能调试

解决:

1. 在网站根目录的.htaccess文件里加上

php_flag display_errors on
php_value error_reporting 2039
详情看另外一篇文章:(用.htaccess设置 PHP错误显示 )

2. 然后找到/errors/local.xml.sample这个文件,改成/errors/local.xml

3. 接着找到lib/Zend/Cache/Backend/File.php

查找 protected $_options = array( ’cache_dir’ => ‘null’,

替换成 protected $_options = array( ’cache_dir’ => ‘tmp/’,

4. 最后在/index.php文件里把error_reporting(E_ALL | E_STRICT) ;和ini_set('display_errors', 1) ;注释取消。可以再加上Mage::setIsDeveloperMode(true) ;这句配合第二点把magento的开发模式打开

这几步下来Magento的错误报告 就打开啦!

magento,zencart可以用netbeans进行调试和跟踪

尝试用了几种支持php的调试软件,感觉设置太复杂了,基本对已存在的开源项目没成功设置过,而且使用的很晕,有得还得破解什么的。
努力的寻找,终于找到的netbeans这个由oracele出品的调试软件,目前版本的6.9.1,7.0的beta也可下载了,它可能调试php,java,c++,ruby什么的,可以根据不同的需要进行选择下载包,方便。
你可以在windows上安装phpnow或xampp等apache等运行环境,xp下建议用phpnow,vista或win7建议用xampp,然后根据官网上的netbeans学习指南,设置一下xdebug即可。
在安装好的本机运行环境上安装magento或zencart,接着在netbeans上新建一个已存在php代码的项目,即可进行跟踪调试,非常方便,不要像其它调试软件设置一堆参数,而且界面支持中文版,让你不看说明一上手就会调试。
之前我就用他调试过zencart,现在用它来调试magento.
 

magento查看当前调试环境及接口

如果你是magento初学者,你会被magento庞大的功能和灵活震憾了,当时同时你也会觉得面对那么多的代码似乎无从下手。最学见的问题是在 某个模板内你不知道有哪些接口你可以用。magento的接口那么丰富,如果这个不会更谈不起二次开发了。其实借助php的最基本的几个函数你就可以查看 当前有哪些类哪些接口可以使用了。

 echo print_r(get_class_methods(get_class( $this )));

 你还可以通过调用block的debug方法:

 echo print_r( $this ->debug());

 因为magento是在zend 框架下开发的,所以你还可以:

 echo Zend_Debug::dump( $this );

magento利用日志进行调试的方法

1、在后台打开日志功能,在system\configure\developer\log settings,分别记录系统日志和错误日志
2、php里做调试的时候我们经常用exit来中断流程,Magento也是一样,但有些后台运行的代码是没办法用exit中断后输出信息到浏览器的,比如监听事件的方法运行的时候,又比如api接口被调用的时候,这是可以用写日志文件的方式来记录一些特定内容来做调试,Magento自带了一个写日志的静态方法:Mage::log(),如:
    Mage::log('$Message');
3、
可以把你想要记录的信息写进系统自带的system.log文件里,当然你也可以自己新建一个文件来写记录,代码如下:
    Mage::log($loginfo, null, "logfile.log"); 
4、system\configure\system\log cleaning可以设置定期清除日志的周期!

magento查看和调试当前有哪些类被加载到模板

初学者最常见的问题是在某个模板内你不知道有哪些接口你可以用。magento的接口那么丰富,如果这个不会更谈不起二次开发了。其实借助php的最基本的几个函数你就可以查看当前有哪些类哪些接口可以使用了。

echo print_r(get_class_methods(get_class( $this )));

你还可以通过调用block的debug方法:

echo print_r( $this ->debug());

因为magento是在zend 框架下开发的,所以你还可以:

echo Zend_Debug::dump( $this );
具体效果大家自己测!