[原创] WeiPHP在SAE环境下的使用

说明:本文是基于weiphp v2.0 beta版写的,与最新版本的代码可能会有些出入,请自行判断。一些常见问题,请移动文章最后,如果没有列出你遇到的问题,请点击右上角的QQ图标来联系我。

 

一、SAE环境初始化

关于如何操作SAE环境,请查阅SAE的官方文档,此处就不详细说明了。以下内容都只是描述需要准备哪些内容,不会进行详细的操作说明。

 

1、创建应用

 

2、初始化MySQL数据库

 

3、创建一个Domain

 

4、初始化MemCache

 

5、为代码创建一个版本

 

二、上传代码并安装

使用SVN客户端工具,将解压出来的WeiPHP代码目录上传至SAE的SVN服务器上。本教程使用的源码版本为: 2014年7月11号版本(7月14号22点更新)。由于此源码包超过了20MB,所以无法直接上传代码包,只能解压后再用SVN工具提交代码。

 

代码上传成功后,就可以访问自己的应用首页了,准备开始安装。在此只说明需要注意的安装步骤。

 

安装的第三步是创建数据库,WeiPHP会自动识别出SAE的环境变量,所以基本不需要变更。如果你的应用已经存在其它的数据表时,需要注意一下”数据表前缀”选项,不要与现有的数据表前缀重复。在此步骤中还会要求创建系统管理员账号,也要根据自己的习惯来设定。

 

最后一步是安装完成的步骤,也是许多新人遇到问题的步骤。其实此页提示已经很明确了,只要按提示完成文件更新、保存、提交动作,就可以安装完成了,但新人通常会有比较”毛躁”的问题,看到此页时,不管提示什么,就直接去点击”登录后台”或”访问首页”了,其实此时对于SAE环境来说,安装并没有完成,两个重要的配置文件还没有被更新,这是因为SAE并没有直接写本地文件的权限,所以只能由应用的拥有者自己来完成操作。

更新文件1(更新):Application/Common/Conf/config.php

主要是更新了DB的详细配置信息。

更新文件2(创建):Application/User/Conf/config.php

保存DB连接串等信息。

本更新完成后,一定要将代码提交到SVN上,然后才可以继续访问。

 

我们试一下”登录后台”。

登陆成功,至此我们的WeiPHP的安装算是成功完成了。

 

三、针对SAE环境的代码修改

针对SAE环境的诸多限制,特别是无权写文件的限制,造成很多程序都需要做一些移植的代码修改,WeiPHP也不例外。比较好的事情是,ThinkPHP内核是提供SAE支持的(但支持的并不完美),所以需要修改的代码并不多。

如果你不关心代码修改的内容,可以直接下载我提供的代码包,直接上传、安装即可。

 

1、普通的图片上传项目

Application/Admin/Conf/config.php

更正:上图中的”‘domain’=>’weiphp2′”正确内容应为”‘domain’=>’public'”。

Application/Home/Conf/config.php

 

更正:上图中的”‘domain’=>’weiphp2′”正确内容应为”‘domain’=>’public'”。

Application/Common/Common/function.php

Application/Home/Model/PictureModel.class.php

ThinkPHP/Library/Think/Upload/Driver/Sae.class.php

 

至此,普通的图片上传功能就移植完成。我们可以测试一下,可以使用”公众号管理”中新增公众账号页面的上传头像功能,或者你已经追加了公众账号的情况下,使用”自定义回复”页面新增一条自定义回复功能来测试。

使用手机关注一下此公众账号,然后测试一下客户端的图片是否正常。


管理端成功上传,客户端成功显示,修改完毕。

 

2、Baidu编辑器中的图片上传

由于目前使用”百度编辑器”的比较多,所以本教程只是针对”百度编辑器”进行了修改。在修改前,请登录后台,将”前台编辑器”插件设置一下,如下图,请选择”百度编辑器”并保存。

更新文件1:Addons/EditorForAdmin/Controller/UploadController.class.php

 

 

是的,此处就只修改这一个文件即可。我们再来测试一下,继续编辑前边的”自定义回复”的测试内容。下图中标记的内容就是编辑器的图片上传、管理按钮。

先看下”在线管理”功能,已经可以列出所有上传过的图片了。此处可能会有个问题:当上传的图片太多时,可能会有性能问题。

 

再测试一下上传的功能,选择多张图片,然后上传。

 

上传完成后,按”确认”按钮,图片就被插入到富文本中了,我保存一下,准备使用手机测试一下吧。

 

为了抓图方便一点,我使用网页版的微信进行了测试。


点击进入详细内容,我们上传的图片已经都出来在面前了。

 

到此,WeiPHP移植到SAE环境的代码修改都完成了,但修改内容主要是针对图片上传的,我看到新版的代码中,增加了Excel的一些支持,但暂时没有研究是应用在哪个功能中的,暂时算是个遗留问题吧。如果需要操作上传的Excel文件,可能会需要更多的修改,比如读取文件时,可以先把文件放到SAE的临时文件中进行读写操作,最终保存时,再放回Storage中。而且为了文档的安全性问题,最好是新建Domain,存放在私有的Storage中,避免被别人直接访问到。

 

四、移植后的代码打包

打包的程序包含以上代码修改,但为了其他人拿来后可以安装,所以其中的”Application/Common/Conf/config.php”文件被还原成初始版本(相当于删除了DB信息),删除了”Application/User/Conf/config.php”文件。将此代码包内容上传到自己的SAE SVN上后,打开应该就是正常的安装界面,如果有问题,请联系我:xhy_cy@163.com,或站内消息。

 

==================================

2014/07/23 更新:

代码提交到了github上,今后如果有更新,将只更新github上的代码,不再打包发布了。

https://github.com/xhy008/weiphp_on_sae

注:增加了2.0稳定版修改后的releash版下载:

https://github.com/xhy008/weiphp_on_sae/archive/v2.0.zip

http://download.csdn.net/detail/xhy_cy/8200451

 

==================================

2014/10/28 追记:

1、有人按我的代码修改后,上传图片时还是提示错误,这种情况下,请首先确认下你的storage下的domain是否正确创建了(命名必须是:public)。

2、最近一些人遇到了“验证码”不显示的问题,我也没有找到原因,因为我的SAE环境下一直是正常的,而且看了代码,也没有发现什么特殊的内容,就是使用GD库在生成一个图片,并返回给浏览器,而SAE环境下,GD库的启用的。所以我也只能是提供临时的解决办法,请在phpmyadmin中执行以下SQL,暂时关闭验证码的功能:

[code lang=”sql”]
update `wordpress_config` set value=0 where name=’WEB_SITE_VERIFY’
[/code]

然后还要清空一下memcache,这样参数才能生效。

3、关于SAE下的重新安装。官方已经提供给我了SAE安装时的一些代码,但由于个人能力与时间问题,并没有整合到此代码中。如果要重新安装,请一定要清空一下你的memcache。

 

4、关于重新安装

由于某些原因进行重新安装时,请先清理一下Memcache,SAE环境下,一些状态参数是缓存在Memcache中的,代码文件也可以删除,或者把单独Application/User/Conf/config.php配置文件删除。至于DB是否删除就自己判断下吧,如果不放心也可以全部删除,对于已经有重要数据的DB,一定要先备份一下(导出SQL文件)。