这篇文章主要为大家展示了“bugfree如何安装及配置”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“bugfree如何安装及配置”这篇文章吧。
1.下载Apache、Php、Mysql等的运行环境——XAMPP
网址:http://jaist.dl.sourceforge.net/project/xampp/XAMPP%20Windows/1.8.2/xampp-win32-1.8.2-3-VC9.zip
2.解压缩到XAMPP目录下,D:\Program Files\XAMPP
3.运行D:\Program Files\XAMPP\setup_xampp.bat
4.运行xampp-control.exe,提示bugfile文件夹没有读写权限,查看XAMPP目录,发现该目录下并无该文件夹,于是手动建立此文件夹,然后再次检查,发现成功通过检查,可以进行下一步骤的配置操作。
5.启动Apache服务器和Mysql服务器
6.在浏览器中输入http:\\localhost,出现XAMPP首页,选择左侧目录树中的项,了解一下XAMPP,同时,配置下【安全】下的相关密码、用户名等安全信息。
7.下载bugfree
网址为:http://51.duote.org/bugfree.zip
解压缩后放到D:\Program Files\xampp\htdocs目录下。【注意,此处不是把bugfree目录放在这个目录下,而是要把bugfree目录下的文件复制到这个目录下。我首次安装时,就是把bugfree目录放在htdocs目录下,但是启动浏览器输入http:\\localhost之后,并没有弹出预期的bugfree配置页面。但是更通常的方法是把bugfree目录复制到htdocs目录,但是我这样配置行不通,因为只是做了解,所以没有深入探索,大家安装时还请注意。】
8.在浏览器中输入http:\\localhost,弹出错误提示
==================================================================================================
PHP Error
mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.
D:\Program Files\xampp\htdocs\protected\service\SqlService.php(563)
551 *
552 * @author Yupeng Lee<leeyupeng@gmail.com>
553 * @param string $fieldName FieldName
554 * @param string $operatorName =,<,>,<= eg.
555 * @param string $fieldValue FieldValue
556 * @return string Query string for SQL
557 */
558 private static function baseGetFieldQueryStr($searchFieldConfig, $type, $fieldName, $operatorName, $fieldValue)
559 {
560 $basicTableName = '{{' . $type . 'view}}';
561 $fieldValue = trim($fieldValue);
562
563 $fieldValue = mysql_escape_string($fieldValue);
564 //handle search value %
565 $fieldValue = str_replace('%', '\%', $fieldValue);
566 // $fieldValue = str_replace('_', '\_', $fieldValue);
567
568 $queryStr = '';
569 if($fieldValue == '')
570 {
571 return $queryStr;
572 }
573 elseif(Info::MARK == $fieldName)
574 {
575 $inOrNotIn = ' not in ';
Stack Trace
#0 +
– D:\Program Files\xampp\htdocs\protected\service\SqlService.php(563): mysql_escape_string("Sample Product")
558 private static function baseGetFieldQueryStr($searchFieldConfig, $type, $fieldName, $operatorName, $fieldValue)
559 {
560 $basicTableName = '{{' . $type . 'view}}';
561 $fieldValue = trim($fieldValue);
562
563 $fieldValue = mysql_escape_string($fieldValue);
564 //handle search value %
565 $fieldValue = str_replace('%', '\%', $fieldValue);
566 // $fieldValue = str_replace('_', '\_', $fieldValue);
567
568 $queryStr = '';
#1 +
– D:\Program Files\xampp\htdocs\protected\service\SqlService.php(474): SqlService::baseGetFieldQueryStr(array("id" => array("label" => "ID", "type" => "number", "isBasic" => true), "title" => array("label" => "Bug", "type" => "string", "isBasic" => true), "module_name" => array("label" => "模块路径", "type" => "path", "isBasic" => true), "bug_status" => array("label" => "状态", "type" => "option", "isBasic" => true, "value" => array("", "Active", "Resolved", "Closed")), ...), "bug", "module_name", "UNDER", ...)
469 $queryGroup = array();
470 foreach($searchRowConditionArr as $rowCondtion)
471 {
472 $whereStr = ' ';
473 $tempQueryStr = self::baseGetFieldQueryStr($searchFieldConfig, $type,
474 $rowCondtion[$fieldName], $rowCondtion[$operatorName], $rowCondtion[$valueName]);
475 if($tempQueryStr == '')
476 {
477 if($rowCondtion[$leftParenthesesName] == "(" && $rowCondtion[$rightParenthesesName] == ")")
478 {
479
#2 +
– D:\Program Files\xampp\htdocs\protected\controllers\InfoController.php(558): SqlService::baseGetGroupQueryStr(array("id" => array("label" => "ID", "type" => "number", "isBasic" => true), "title" => array("label" => "Bug", "type" => "string", "isBasic" => true), "module_name" => array("label" => "模块路径", "type" => "path", "isBasic" => true), "bug_status" => array("label" => "状态", "type" => "option", "isBasic" => true, "value" => array("", "Active", "Resolved", "Closed")), ...), "bug", array(array("leftParenthesesName" => "", "field" => "module_name", "operator" => "UNDER", "value" => "Sample Product", ...)))
553 }
554 }
555
556 $searchRowArr = $this->setSpecialModuleCondiftion($searchRowArr, $productName);
557 Yii::app()->user->setState($productId . '_' . $infoType . '_search', $searchRowArr);
558 $getSqlResult = SqlService::baseGetGroupQueryStr($searchFieldConfig, $infoType, $searchRowArr);
559 if(CommonService::$ApiResult['FAIL'] == $getSqlResult['status'])
560 {
561 $whereStr = ' 1<>1 ';
562 }
563 else
#3 +
–
D:\Program Files\xampp\htdocs\lib\web\actions\CInlineAction.php(50): InfoController->actionIndex()
45 $controller=$this->getController();
46 $method=new ReflectionMethod($controller, $methodName);
47 if($method->getNumberOfParameters()>0)
48 return $this->runWithParamsInternal($controller, $method, $params);
49 else
50 return $controller->$methodName();
51 }
52
53 }
#4 +
–
D:\Program Files\xampp\htdocs\lib\web\CController.php(300): CInlineAction->runWithParams(array("type" => "bug", "product_id" => "1"))
295 {
296 $priorAction=$this->_action;
297 $this->_action=$action;
298 if($this->beforeAction($action))
299 {
300 if($action->runWithParams($this->getActionParams())===false)
301 $this->invalidActionParams($action);
302 else
303 $this->afterAction($action);
304 }
305 $this->_action=$priorAction;
#5 +
–
D:\Program Files\xampp\htdocs\lib\web\filters\CFilterChain.php(134): CController->runAction(CInlineAction)
129 $filter=$this->itemAt($this->filterIndex++);
130 Yii::trace('Running filter '.($filter instanceof CInlineFilter ? get_class($this->controller).'.filter'.$filter->name.'()':get_class($filter).'.filter()'),'system.web.filters.CFilterChain');
131 $filter->filter($this);
132 }
133 else
134 $this->controller->runAction($this->action);
135 }
136 }
#6 +
–
D:\Program Files\xampp\htdocs\protected\components\Controller.php(45): CFilterChain->run()
40 if((true != Yii::app()->user->isGuest) &&
41 empty($productId))
42 {
43 LoginService::setUserInfo();
44 }
45 $filterChain->run();
46 }
47
48 public function init()
49 {
50 $language = Yii::app()->user->getState('language');
#7 +
–
D:\Program Files\xampp\htdocs\lib\web\filters\CInlineFilter.php(59): Controller->filterUserInfo(CFilterChain)
54 * @param CFilterChain $filterChain the filter chain that the filter is on.
55 */
56 public function filter($filterChain)
57 {
58 $method='filter'.$this->name;
59 $filterChain->controller->$method($filterChain);
60 }
61 }
#8 +
–
D:\Program Files\xampp\htdocs\lib\web\filters\CFilterChain.php(131): CInlineFilter->filter(CFilterChain)
126 {
127 if($this->offsetExists($this->filterIndex))
128 {
129 $filter=$this->itemAt($this->filterIndex++);
130 Yii::trace('Running filter '.($filter instanceof CInlineFilter ? get_class($this->controller).'.filter'.$filter->name.'()':get_class($filter).'.filter()'),'system.web.filters.CFilterChain');
131 $filter->filter($this);
132 }
133 else
134 $this->controller->runAction($this->action);
135 }
136 }
#9 +
–
D:\Program Files\xampp\htdocs\lib\web\filters\CFilter.php(41): CFilterChain->run()
36 */
37 public function filter($filterChain)
38 {
39 if($this->preFilter($filterChain))
40 {
41 $filterChain->run();
42 $this->postFilter($filterChain);
43 }
44 }
45
46
1140 public function filterAccessControl($filterChain)
1141 {
1142 $filter=new CAccessControlFilter;
1143 $filter->setRules($this->acce***ules());
1144 $filter->filter($filterChain);
1145 }
1146
1147
56 public function filter($filterChain)
57 {
58 $method='filter'.$this->name;
59 $filterChain->controller->$method($filterChain);
60 }
61 }
#12 +
–
D:\Program Files\xampp\htdocs\lib\web\filters\CFilterChain.php(131): CInlineFilter->filter(CFilterChain)
126 {
127 if($this->offsetExists($this->filterIndex))
128 {
129 $filter=$this->itemAt($this->filterIndex++);
130 Yii::trace('Running filter '.($filter instanceof CInlineFilter ? get_class($this->controller).'.filter'.$filter->name.'()':get_class($filter).'.filter()'),'system.web.filters.CFilterChain');
131 $filter->filter($this);
132 }
133 else
134 $this->controller->runAction($this->action);
135 }
136 }
#13 +
–
D:\Program Files\xampp\htdocs\lib\web\CController.php(283): CFilterChain->run()
278 $this->runAction($action);
279 else
280 {
281 $priorAction=$this->_action;
282 $this->_action=$action;
283 CFilterChain::create($this,$action,$filters)->run();
284 $this->_action=$priorAction;
285 }
286 }
287
288
154 public function run()
155 {
156 if($this->hasEventHandler('onBeginRequest'))
157 $this->onBeginRequest(new CEvent($this));
158 $this->proce***equest();
159 if($this->hasEventHandler('onEndRequest'))
160 $this->onEndRequest(new CEvent($this));
161 }
162
163 /**
#18 +
–
D:\Program Files\xampp\htdocs\index.php(15): CApplication->run()
10 // remove the following lines when in production mode
11 defined('YII_DEBUG') or define('YII_DEBUG',true);
12 // specify how many levels of call stack should be shown in each log message
13 defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
14 require_once($yii);
15 Yii::createWebApplication($config)->run();
2014-01-02 11:30:05 Apache/2.4.7 (Win32) OpenSSL/0.9.8y PHP/5.4.22 Yii Framework/1.1.8
===================================================================================================
根据提示,找到文件D:\Program Files\xampp\htdocs\protected\service\SqlService.php,使用记事本打开SqlService。php文件,然后把函数mysql_escape_string()改为use mysql_real_escape_string() ,刷新浏览器,可以正常启动bugfree,并进入bugfree首页。
以上是“bugfree如何安装及配置”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!