程序在Linux中运行时发现的问题分享

最近将练手的一个程序放在centos5系统中运行,发现两个问题,程序数据库操作都是基于DAO进行的。




	public function actionIndex()

	{

		$criteria=new CDbCriteria();

		$sql = 'SELECT subject,picture

			FROM cases

			ORDER BY createtime ASC';

				

		$query = Yii::app()->db->CreateCommand($sql);

		$res = $query->query();

		/*此处最后改成了 $res = $query->queryAll(); */


		$pages=new CPagination($res->rowCount);

                /*此处最后改成了 $pages=new CPagination(count($res));*/


		$pages->pageSize = 8;

		$pages->applyLimit($criteria);


		$query = Yii::app()->db->createCommand($sql.' LIMIT :offset,:limit');

			$query->bindValue(':offset',$pages->currentPage*$pages->pageSize);

			$query->bindValue(':limit', $pages->pageSize);

		

		$this->v['posts'] = $query->queryAll();

		$this->v['pages'] = $pages;	


		$this->title = '设计案例';

		$this->render("../{$this->id}-{$this->action->id}",$this->v);		

	}



1、分页统计问题

此段代码在windows下运行正常,但在linux中运行时数据库则会出现Cannot execute queries while other unbuffered queries are active错误。

后将第一次执行的代码$res = $query->query();改为$res = $query->queryAll();及$pages=new CPagination($res->rowCount);改为$pages=new CPagination(count($res));后运行成功。

2、视图载入部分问题

此段代码的视图载入部分$this->render("../{$this->id}-{$this->action->id}",$this->v);中的视图文件是直接放在views目录中,所以采用../加视图名称的方式,此段在windows中也是运行正常,但在linux中则会出现找不到模板的错误提示,最后只有在views目录中创建与控制名称相同的空目录后正常,看来linux必须要有目录存在,然后才能基于存在的目录执行../进入上一级。

以上算是分享经验吧,关于第一个问题不知大家有没有更好的办法解决,如有希望能跟帖分享,谢谢。

应该是PHP版本的问题,建议你换最新版本或比较稳定的版本!

最好贴一下trace信息,如果真是bug,也可以一块学习下

找不到模块的错误看一下是否是大小的问题

感谢大家的帮助,现在采用了一个国外朋友的解决方案,问题已经解决,解决办法地址为

http://www.yiiframework.com/forum/index.php?/topic/14090-a-question-about-cpagination-with-dao/