PHP调试的有用方法
常用的调试方法这里就不多说了,我把我平时常用的调试函数和方法留在这里,以便自己随时使用,也乐意分享给各位朋友。
一、自定义调试函数:
1 2 3 4 5 6 7 8 9 10 11 12 |
/** * 写日志,方便测试 * 注意:服务器需要开通fopen配置 * @param $word 要写入日志里的文本内容 默认值:空值 */ function tiaoshi($word='') { $fp = fopen(dirname(__FILE__).'/'.date('Y').date('m').date('d').".log.php","a+"); flock($fp, LOCK_EX) ; fwrite($fp,"<?php exit();?>RUN TIME:".date('Y-m-d H:i:s')."\n".$word."\n"); flock($fp, LOCK_UN); fclose($fp); } |
特别说明这个函数的巧妙之处:
1、日志文件以.php结尾,是为了防止服务器上的日志被黑客下载利用。
2、采用.php结尾后,虽然能禁止下载,但是仍然能通过执行php文件而读取到日志内容,所以在日志文本中添加”<?php exit(); ?>”就可以阻止任何内容的添加。
采用这种办法输出的日志样式为:
1 2 3 4 5 |
<?php exit();?>RUN TIME:2015-01-15 14:28:32 run function notice <?php exit();?>RUN TIME:2015-01-15 14:28:32 run function url <?php exit();?>RUN TIME:2015-01-15 14:35:15 |
二、简单介绍PHP自带的几个调试函数:var_dump,var_export,及debug_backtrace、debug_print_backtrace
var_dump 和 var_export
var_dump 函数可以打印一个变量的相关信息,包括变量的长度、类型、结构信息等。
var_export 与 var_dump的功能相近,区别是:此函数返回关于传递给该函数的变量的结构信息,它和 var_dump()不同的是其返回的表示是合法的 PHP 代码。
可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示,也就是说可以把返回结果赋值给变量。
debug_backtrace 和 debug_print_backtrace
debug_backtrace() 函数生成一个 backtrace。 它可以回溯跟踪函数的调用信息,可以说是一个调试利器。
该函数返回一个关联数组。下面是可能返回的元素:
名称 | 类型 | 描述 |
---|---|---|
function | 字符串 | 当前的函数名。 |
line | 整数 | 当前的行号。 |
file | 字符串 | 当前的文件名。 |
class | 字符串 | 当前的类名 |
object | 对象 | 当前对象。 |
type | 字符串 | 当前的调用类型,可能的调用:
|
args | 数组 | 如果在函数中,列出函数参数。如果在被引用的文件中,列出被引用的文件名。 |
debug_print_backtrace 与 debug_backtrace的区别是debug_print_backtrace直接把追溯的结果输出打印出来。
以上这几个函数如何使用,大家百度一查资料很多。