最近在调试ecshop的程序,发现一些好的调试方法。在php程序的调试中,对于变量值的获取非常重要,这样才能判断是哪里出了问题,如果变量明明赋值了,为什么是空值呢,就可以一步一步追查到原因。我比较喜欢这两个记录当前变量的方法,
第一个方式是file_put_contents函数
非常的简单,这里举一个例子。
$logofile =’log.html’; file_put_contents($logofile, $data.”<br>”,FILE_APPEND);
就是将变量值$data写入log.html中。
第二个方式是error_log函数
$logofile =’log.html’; error_log("You messed up!", 3, $logofile);
我比较喜欢error_log函数,file_put_contents函数有时候会出现错误,无法写入,error_log函数我还没有遇到。logofile值,我一般设置为绝对路径,用emeditor打开,有任何风吹草动,他马上就会提示。
有动静就说明是在这个位置执行的,有数据的变化了。
这个函数的接口为
bool error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] )
其中第一个参数是要输出的日志,第二个参数是输出的方式,一共有四种方式,分别是:
error_log() 日志类型
0 message 发送到 PHP 的系统日志,使用操作系统的日志机制或者一个文件,取决于error_log 指令设置了什么。这是个默认的选项。
1 message 发送到参数 destination设置的邮件地址。第四个参数 extra_headers 只有在这个类型里才会被用到。
2 不再是一个选项。
3 message 被发送到位置为 destination 的文件里。字符 message 不会默认被当做新的一行。(我喜欢这种方式)
4 message 直接发送到 SAPI 的日志处理程序中。
转载请注明:百蔬君 » 【原创文章】推荐两种调试ecshop php程序日志记录的方法