首页 > 代码库 > X6CMS部署在BAE过程

X6CMS部署在BAE过程

前期的BAE创建应用、部署代码之类的就不说了


CI的URI问题

首先遇到的第一个问题就是CI的URI设计缺陷带来的问题,导致在BAE上不能够正确的找到控制器和方法,因此这里就要把它改成使用查询字符串的形式

具体步骤首先去config.php文件把$config[‘enable_query_strings‘] 设为true,但是就这样是不够的,因为X6CMS在设计之初没有考虑这种形式,但也不能每页每句的去改,还好X6CMS在url_helper.php里面增加了一个自己的方法 site_aurl(),专门给后台控制器使用的

if ( ! function_exists(‘site_aurl‘))
{
	function site_aurl($uri = ‘‘)
	{
		$CI =& get_instance();
		$config = $CI->config->config;
		$uriarr = explode("/",$uri);
		// if(empty($uriarr[1])){
		// 	$uri_n = "c=".$uriarr[0]."&m=index";
		// }else{
		// 	$uri_n = "c=".$uriarr[0]."&m=".$uriarr[1];
		// }
		$uri_n = (empty($uriarr[0])?"":"&c=".$uriarr[0]).(empty($uriarr[1])?"":"&m=".$uriarr[1]);
		return $CI->config->base_url(‘index.php?d=‘.$config[‘admin_folder‘].$uri_n);
	}
}

这里我修改了一下,原来传进来的$uri 都是类似 main/hello 这种形式的,/ 前的是控制器,后面的是方法,在这里就自己构造c=main&m=hello 查询字符串的形式(深夜精神不太好,代码写得一般,明天有时间优化下)

至此,这个问题就完美的解决了~


BAE Mysql 不能完美支持 php 序列化的问题

兴致勃勃地进入后台却发现还是404!马上打开F12看看,发现有一个 http://yourwebsite/index.php?d=admin 这样的网页请求,翻遍都找不到,然后对比了一下本地的,发现这个请求是来自用户组权限读取的,翻开用户组的表发现里面数据本地和BAE数据库对比多了两条,原来BAE mysql对php的序列化格式似乎支持得不太好,直接插入会报unsupport sql。这下就有点麻烦了,毕竟数据库不在身边,给不了及时的呵护与照顾,把本地数据插了几次也还是插不进BAE的库里,无奈之下把这段序列化的内容拿去了做json格式化,竟然被我插进去了!

既然json格式能插,接下来就很简单了,我就在purview_model.php里面的getPurview方法 在获取到$row后对$row[‘purview‘] 进行去空格去换行符去去去操作~再序列化~成功~(这里代码很简单就不贴了)


到目前为止X6CMS的后台已经能够在我的BAE上跑起来了,不过前台肯定还有地址问题 明天继续改吧~

(深夜写东西有点乱~有空再整理~)