Emlog for BAE修改教程,支持附件上传(云存储)等
Emlog for BAE修改教程,支持附件上传(云存储)等
孤月蓝风 发表于1个月前
Emlog for BAE修改教程,支持附件上传(云存储)等
  • 发表于 1个月前
  • 阅读 1
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

Ps.2013.12.03  Emlog 5.2 For BAE 已经发布

请猛戳 -> Emlog For BAE 发布专文

本文不再更新,所有更新均发布在上面的地址中

-------------------------------------------

Ps.2013.12.02  Emlog 5.2 BAE正在移植

Ps.2013.12.02  官方5.2已发布,BAE版正在开发中。本版将修改原来的BCS存储为PCS存储,能够更方便的管理上传的文件,敬请期待!

Ps:官方的Emlog 5.2即将发布,发布之后我会出一个完整的BAE版本,不再需要这么麻烦的修改代码。只修改几个配置就搞定,然后打包上传就可以了。敬请期待!


这个是我亲测的5.1.2完全正常,不知道为什么有很多朋友的都不行,由于5.2即将发布,所以暂不做更新,待5.2发布后再更新新版本。


本修改基于EMLOG 5.0.1版本,其他版本未测试。一般来说是不会出问题,除非EMLOG大版本升级。

PS:2013.07.24   教程更新,亲测5.1.2可用。

PS:2013.07.12   修改第二部分附件上传第41、42行的代码,之前不知道什么问题,也是个人疏忽,导致代码中多了两个单引号,造成无法上传,现已修正。感谢  VIP下页、下一 的反馈。


之前写过一篇文章,《BAE版的EMLOG已完工!》,后来EMLOG又升级了几次,外加微博通的同步一直搞不定,所以就暂时搁浅了。


现在我的博客(已经不能单纯的算博客了,算个网站),是我自己基于taoCMS二次开发的,对BAE的支持更好,也搞定了很多BAE上存在的问题。所以,EMLOG也就没继续用。现在这个博客稳定了,又有闲暇时间,所以跟大家分享一下,EMLOG for BAE的修改方法。


BAE上的EMLOG,最好是本地已经配置好的,然后将本地配置完成的打包上传即可。数据库也在本地备份,然后通过BAE的PMA导入。


先下载BCS(百度云存储,用于存储附件)的SDK放在admin目录中。

下载地址:http://bcs.duapp.com/bcs-api/bcs-sdk-php_1.2.tar.gz


一、本地安装EMLOG,并将一切设置OK,如原有博客,请将数据恢复到本地。

二、按照下面的提示修改文件(因版本升级,所以可能导致我写的行号不对,大家可以查找一下被替换的代码,来确定行号)

1.配置文件

在上传到BAE之前,需要先修改配置文件,因为BAE是不支持I/O读写的,所以需要在配置文件中手动加上BAE数据库信息的获取方式。

$dbname = '';        //填入自己的数据库名称
$host = getenv('HTTP_BAE_ENV_ADDR_SQL_IP');
$port = getenv('HTTP_BAE_ENV_ADDR_SQL_PORT');
$user = getenv('HTTP_BAE_ENV_AK');
$pwd = getenv('HTTP_BAE_ENV_SK');

之后,将下面的数据库信息其中四条修改为:

define('DB_HOST',$host.':'.$port);
define('DB_USER',$user);
define('DB_PASSWD',$pwd);
define('DB_NAME',$dbname);

这样,完成了最新本的数据库配置。


2.附件上传

打开admin目录下的attachment.php文件,第41行(5.1.2中为第43行)左右的代码:

//写入附件信息
$query="INSERT INTO ".DB_PREFIX."attachment (blogid,filename,filesize,filepath,addtime) values ($logid,'".$attach['name'][$i]."','".$attach['size'][$i]."','".$upfname."','".time()."')";

修改为:

$bcs_upfname = str_replace('..', '', $upfname);
//将文件上传至BAE云存储
require_once './bcs.class.php';
$host = 'bcs.duapp.com';
//bucket的ak
$ak = '';
//bucket的sk
$sk = '';
//bucket名称
$bucket = '';
$object = $bcs_upfname;    //这个是上传后文件的名字
$fileUpload = $upfname;    //这个是需上传的文件的名字
$baiduBCS = new BaiduBCS ( $ak, $sk, $host );
$response = $baiduBCS->create_object ( $bucket, $object, $fileUpload );
if (! $response->isOK ()) {
    die ( "文件上传失败!" );
}
$bcs_url = $baiduBCS->generate_get_object_url($bucket, $object, $opt = array());
//百度云附件信息写入数据库
$query="INSERT INTO ".DB_PREFIX."attachment (blogid,filename,filesize,filepath,addtime) values ($logid,'".$attach['name'][$i]."','".$attach['size'][$i]."','".$bcs_url."','".time()."')";

打开admin/views目录下的attlib.php文件,第32行代码:

$atturl = BLOG_URL.substr(str_replace('thum-','',$value['filepath']),3);

修改为

if (strpos($value['filepath'],'bcs.duapp.com') != false) { 
    $atturl = $value['filepath']; 
} else { 
    $atturl = BLOG_URL.substr(str_replace('thum-','',$value['filepath']),3);        
}

第41、42行(5.1.2中为45,46行)

$imgpath = "./views/images/fnone.gif";
$embedlink = "插入 ";

修改为:

if (strpos($value['filepath'],'duapp') != false) {
$imgpath = $value['filepath'];
$ed_imgpath = urlencode($imgpath);
$embedlink = "插入 ";
} else {
$imgpath = "./views/images/fnone.gif";
$embedlink = "插入 ";
}



这一块儿网页输出显示的不正确,一直解决不了,只好放一张截图了。


3.修改博客地址,在EMLOG后台->设置->博客地址,然后打开根目录下的 init.php 文件,修改 define('BLOG_URL', Option::get('blogurl')); 这一行中后面的 Option::get('blogurl') 为 '你的地址' (地址两边加单引号,例如:http://tremlog.duapp.com/)


4.删除 content/cache 目录下,所有文件


三、所有修改完毕后,用本地的 Phpmyadmin 导出数据库(因为之前数据库已修改为BAE方式,所以不能通过后台导出),之后在BAE的 phpmyadmin 上导入。


四、BAE版EMLOG的伪静态设置

BAE上的伪静态设置,请参考:《BAE版EMLOG的伪静态设置

EMLOG在BAE上的修改基本就是这些了,如果发现有什么问题,也可以留言询问。

标签: BAE EMLOG 教程
共有 人打赏支持
粉丝 8
博文 70
码字总数 36962
×
孤月蓝风
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: