发布阿里云OSS for phpcmsV9整合教程
说明:这个算不上是插件,因为没有安装包,需要手工修改代码。
还有一点就是后台发布文章时上传的附件还是会保存在你的服务器上,基于以下原因:
1、个人的需求是前台页面需要使用thumb函数生成多个缩略图大小,thumb函数是不支持远程图片的(保存在OSS上就变远程图片了),即使修改为支持远程图片,也需要将远程图片先保存到本地,这样速度会非常慢,是非常非常;
2、做备份的需要,这点你懂得,某天OSS上的附件没有了就悲剧了,所以使用这个OSS for phpcmsV9需要服务器有一定的空间。
下面是整合的教程:修改代码前请先备份好文件
1、下载OSS的SDK,下载地址
http://dev.aliyun.com/article/detail?spm=0.0.0.62.q5af2S&article_id=45
2、解压SDK压缩包,打开conf.inc.php,修改Access Key ID和Access Key Secret为自己的,如何获取API 密钥(Access ID & Access Key ),
3、将SDK包中的以下文件放入红色框的路径
4、打开phpcms\modules\admin\templates\setting.tpl.php
搜索
<td class="y-bg"><input type="text" class="input-text" name="setconfig[upload_url]" id="upload_url" size="" value="<?php echo $upload_url?>" /></td>
</tr>
在下方添加
<!--阿里云OSS配置 S-->
<tr>
<th width=""><?php echo L('setting_oss_enable')?></th>
<td class="y-bg">
<input name="setconfig[oss_enable]" value="" type="radio" <?php echo ($oss_enable=='') ? ' checked' : ''?>> <?php echo L('setting_yes')?>
<input name="setconfig[oss_enable]" value="" type="radio" <?php echo ($oss_enable=='') ? ' checked' : ''?>> <?php echo L('setting_no')?></td>
</tr>
<tr>
<th width=""><?php echo L('setting_oss_id')?></th>
<td class="y-bg">
<input type="text" class="input-text" name="setconfig[oss_id]" id="oss_id" size="" value="<?php echo $oss_id?>" />
<div class="onShow">还没有?<a href="http://help.aliyun.com/manual?spm=0.0.0.111.8BPOua&helpId=786" target="_blank">到这里获取API 密钥</a></div>
</td>
</tr>
<tr>
<th width=""><?php echo L('setting_oss_secret')?></th>
<td class="y-bg"><input type="password" class="input-text" name="setconfig[oss_secret]" id="oss_secret" size="" value="<?php echo $oss_secret?>" /></td>
</tr>
<tr>
<th width=""><?php echo L('setting_oss_bucket')?></th>
<td class="y-bg"><input type="text" class="input-text" name="setconfig[oss_bucket]" id="oss_bucket" size="" value="<?php echo $oss_bucket?>" /></td>
</tr>
<tr>
<th width=""><?php echo L('setting_oss_path')?></th>
<td class="y-bg"><input type="text" class="input-text" name="setconfig[oss_path]" id="oss_path" size="" value="<?php echo $oss_path?>" /></td>
</tr>
<tr>
<th width=""><?php echo L('setting_oss_upload_url')?></th>
<td class="y-bg"><input type="text" class="input-text" name="setconfig[oss_upload_url]" id="oss_upload_url" size="" value="<?php echo $oss_upload_url?>" /></td>
</tr>
<!--阿里云OSS配置 E-->
=====打开phpcms\languages\zh-cn\admin.lang.php
在?>前加入
$LANG['setting_oss_enable'] = '启用阿里云存储';
$LANG['setting_oss_id'] = 'Access Key ID';
$LANG['setting_oss_secret'] = 'Access Key Secret';
$LANG['setting_oss_bucket'] = 'Bucket名称';
$LANG['setting_oss_path'] = 'OSS上的图片目录';
$LANG['setting_oss_upload_url'] = '访问路径';
打开phpcms\modules\admin\setting.php,
搜索
$setting['errorlog_size'] = trim($_POST['setting']['errorlog_size']);
在下方添加
//阿里云云存储配置
$setting['oss_enable'] = intval($_POST['setconfig']['oss_enable']);
$setting['oss_id'] = trim($_POST['setconfig']['oss_id']);
$setting['oss_secret'] = $_POST['setconfig']['oss_secret'];
$setting['oss_bucket'] = trim($_POST['setconfig']['oss_bucket']);
$setting['oss_path'] = trim($_POST['setconfig']['oss_path']);
$setting['oss_upload_url'] = trim($_POST['setconfig']['oss_upload_url']);
=====打开phpcms\modules\attachment\attachments.php
搜索
$this->groupid = param::get_cookie('_groupid') ? param::get_cookie('_groupid') : ;
在下方加入
$this->oss = getcache('common','commons'); //载入云存储配置的缓存
再搜索
echo $aids[].','.$this->upload_url.$attachment->uploadedfiles[]['filepath'].','.$attachment->uploadedfiles[]['isimage'].','.$filename;
替换为
if($this->oss['oss_enable']){ //图片云存储
echo $aids[].','.$this->oss['oss_upload_url'].$attachment->uploadedfiles[]['filepath'].','.$attachment->uploadedfiles[]['isimage'].','.$filename;
}else{
echo $aids[].','.$this->upload_url.$attachment->uploadedfiles[]['filepath'].','.$attachment->uploadedfiles[]['isimage'].','.$filename;
}
=====打开phpcms\libs\classes\attachment.class.php
搜索
var $site = array();
在下方加入
var $oss; //云存储
再搜索
$this->upload_dir = $upload_dir;
在下方加入
$this->oss = getcache('common','commons'); //载入云存储配置的缓存
再搜索
if($watermark_enable) {
$image->watermark($savefile, $savefile);
}
在下方加入
if($this->oss['oss_enable']){ //图片云存储
pc_base::load_app_class('sdk', '' ,); //载入OSS类
$oss_sdk_service = new ALIOSS();
$oss_sdk_service->set_debug_mode(FALSE); //设置是否打开curl调试模式
$oss_sdk_service->upload_file_by_file($this->oss['oss_bucket'],$this->oss['oss_path'].$filepath,$this->upload_root.$filepath);
}
再搜索
if($thumbs) foreach($thumbs as $thumb) @unlink($thumb);
在下方加入
//删除OSS上的图
if($this->oss['oss_enable']){ //图片云存储
pc_base::load_app_class('sdk', 'attachment' ,); //载入OSS类
$oss_sdk_service = new ALIOSS();
$oss_sdk_service->set_debug_mode(FALSE); //设置是否打开curl调试模式
$oss_sdk_service->delete_object($this->oss['oss_bucket'],$this->oss['oss_path'].$r['filepath']);
}
5、后台设置(设置 > 相关设置 > 基本设置),对照以下图片
phpcms和uploadfile这个两个都需要手工创建
OSS上的设置
5、最后一点就是将相关模型字段中的editor修改为不保存远程图片:
更新缓存!
看下图的路径
转载:bs.phpcms.cn/thread-758240-1-1.html
发布阿里云OSS for phpcmsV9整合教程的更多相关文章
- phpcmsv9 阿里云OSS云存储整合教程
该教程算不上是phpcmsv9阿里云oss插件,所以整个修改及其代码覆盖前请一定记得备份.还有一点就是后台发布文章时上传的附件还是会保存在你的服务器上,基于以下原因:1.个人的需求是前台页面需要使用t ...
- 保姆级SpringBoot+Vue图片上传到阿里云OSS教程
小二是新来的实习生,作为技术 leader,我给他安排了一个非常简单的练手任务,把前端 markdown 编辑器里上传的图片保存到服务器端,结果他真的就把图片直接保存到了服务器上,这下可把我气坏了,就 ...
- 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程
在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...
- SpringBoot整合阿里云OSS文件上传、下载、查看、删除
1. 开发前准备 1.1 前置知识 java基础以及SpringBoot简单基础知识即可. 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lom ...
- Thinkphp整合阿里云OSS图片上传实例
Thinkphp3.2整合阿里云OSS图片上传实例,图片上传至OSS可减少服务器压力,节省宽带,安全又稳定,阿里云OSS对于做负载均衡非常方便,不用传到各个服务器了 首先引入阿里云OSS类库 < ...
- SpringBoot 2.0整合阿里云OSS,实现动静分离架构
前言 相信大部分开发者对下面这张架构图并不陌生吧,现在很多网站/应用都采用了动静分离的架构进行部署.博主的博客也不例外,主机采用的是阿里云的 ECS,使用 CDN 做静态内容分发,不过静态文件还是存储 ...
- 整合阿里云OSS
整合阿里云OSS 一.对象存储OSS 为了解决海量数据存储与弹性扩容,采用云存储的解决方案- 阿里云OSS. 1.开通"对象存储OSS"服务 (1)申请阿里云账号 (2)实名认证 ...
- 阿里云OSS整合
一.对象存储OSS 为了解决海量数据存储与弹性扩容(主要是静态文件的存储例如图片,语音,视频等),项目中我们通常采用云存储的解决方案- 阿里云OSS. 1.开通"对象存储OSS"服 ...
- SpringBoot整合阿里云OSS对象存储实现文件上传
1. 准备工作: 一.首先登录阿里云OSS对象存储控制台创建一个Bucket作为你的存储空间. 二.创建Access Keyan按要求创建进行,这里的方法步骤我就不展现出来了,你们可以自行查询阿里云文 ...
随机推荐
- linux locate: command not found
装好系统发现使用locate查找文件,提示 -bash: locate: command not found yum install locate 无效,看来locate不是软件名称 [root@ce ...
- (medium)LeetCode 229.Majority Element II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...
- [POJ 2923] Relocation (动态规划 状态压缩)
题目链接:http://poj.org/problem?id=2923 题目的大概意思是,有两辆车a和b,a车的最大承重为A,b车的最大承重为B.有n个家具需要从一个地方搬运到另一个地方,两辆车同时开 ...
- Oracle索引HINT的使用
存储在数据库中数据的分布情况开发人员或管理员比Oracle优化器更加的清楚,在优化器不能作出最有查询路径选择的情况下,使用HINT(提示)人为的固定查询路径,一定程度能生成更优的执行计划. ...
- python3 split( ) not enough values to unpack(expceted 2, got 1)
在运行一个小脚本时,脚本从一文本文件读取数据,事实上这个文件只有一行'count:2',并取到这个2,将其转成数字.但运行,总是报错. 代码如下: with open('count.txt', 'r' ...
- JAVA设计模式之单一职责原则
概念: 就一个类而言应该只有一个因其他变化的原因. 流程: 问题由来:设类或接口类C负责两个不同不同的职责:职责T1,职责T2.当由于职责T1需求改变进而需要修改类C时,可能导致职责T2收到不可预知的 ...
- Functions类,一个Javascript的函数加法类,将两个函数加起来,顺序执行
以下是类的代码: var Functions = { oFunctions: null, add: function (oFunc, oNewFunc) { var oNew = function ( ...
- SQL Server设置主键自增长列
1.新建一数据表,里面有字段id,将id设为为主键 create table tb(id int,constraint pkid primary key (id)) create table tb(i ...
- 【Unity Shaders】学习笔记——SurfaceShader(四)用纹理改善漫反射
[Unity Shaders]学习笔记——SurfaceShader(四)用纹理改善漫反射 转载请注明出处:http://www.cnblogs.com/-867259206/p/5603368.ht ...
- 站点发布到 IIS 后,System.Data.SqlLite.dll 末找到
近来在部署一个站点到客户的服务器 IIS 上时,打开后却出现一个错误的页面,系统提示System.Data.SqlLite.dll 末找到,在站点部署到客户的服务器之前时,在本地测试,却没有发现什么异 ...