首页 > 代码库 > 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上跑起来了,不过前台肯定还有地址问题 明天继续改吧~
(深夜写东西有点乱~有空再整理~)