Warning: Error while sending QUERY packet. PID=27501 in /home/wwwroot/coco/domain/cnlamp/web/wp-includes/wp-db.php on line 1924 thinkphp使用firephp调试错误 | LAMP新闻|技巧|经验|资讯站
现在的位置: 首页PHP>正文
thinkphp使用firephp调试错误
发表于6年前 PHP 暂无评论

Thinkphp的调试真的很傻很难用,要想输出trace信息,条件如下:

1. APP_DEBUG设置成true,
2. action 必须有视图 才行

今天忽然想起firefox中php调试工具firephp,在这里发挥了自己的想象终于把 firephp 集成进来了,哈哈哈,方法如下:
1、把 FirePHP.class.php 复制到 ThinkPHP/Lib/Think/Core 目录中。

2、修改ThinkPHP/Lib/Think/Core/Log.class.php中的record的方法为(THINK_PATH是在入口文件中定义的框架所在目录的常量):

static function record($message,$level=self::ERR,$record=false) {  
	require_once(THINK_PATH."/Lib/Think/Core/FirePHP.class.php");
	if($record || in_array($level,C('LOG_RECORD_LEVEL'))) {  
		$now = date(self::$format);  
		self::$log[] =   "{$now} {$level}: {$message}\r\n";  
 
		switch($level){  
			case self::DEBUG:  
				FirePHP::getInstance(true)->trace($message, $level);  
				break;  
			case self::INFO:              
				FirePHP::getInstance(true)->log($message, $level);  
				break;  
			case self::SQL:  
				FirePHP::getInstance(true)->info($message, $level);  
				break;  
			case self::NOTICE:  
			case self::WARN:  
				FirePHP::getInstance(true)->warn($message, $level);  
				break;  
			default:  
				FirePHP::getInstance(true)->error($message, $level);  
				break;  
		}
	}
}

3、对于 SQL的输出,因为 ThinkPHP/Lib/Think/Db/Db.class.php 里面第128行里把调试参数写死了,
必须将其 与 C(‘APP_DEBUG’) 绑定,很费解,此处需要加一个自定义的,不与原有的相冲突..代码如下:
if(C(‘APP_DEBUG’) || C(‘LOG_RECORD_SQL’))
4、最后在配置文件里面做如下选项,即可:
‘LOG_RECORD’=>true,  // 进行日志记录
‘LOG_RECORD_SQL’=>true,  // 进行日志记录
‘LOG_RECORD_LEVEL’ => array(‘EMERG’,’ALERT’,’CRIT’,’ERR’,’WARN’,’NOTIC’,’INFO’,’DEBUG’,’SQL’),  // 允许记录的日志级别
日志级别可以自增减。

给我留言

留言无头像?


×
腾讯微博