微擎二次开发解决方案

来源网络,未编辑。

微擎的云升级方案,控制了所有核心文件,不光是PHP修改,哪怕是改个图片,也会被云平台的升级覆盖。

但总有自定义修改的时候。为了让大家理解代码,我不会说具体哪一行。代码不多,自己找找。会加深理解,避免出错


怎么办呢?

1.能随时增加新修改的文件
在 /framework/model/cloud.mod.php 中增加一个函数
function change_file_list(){
$list= array(
'/framework/model/cloud.mod.php',
'/web/source/cloud/dock.ctrl.php',
'/web/themes/default/cloud/upgrade.html',
);


return $list;
}
中间的数组就是咱们改过的文件名字和路径,你的每增加一个文件,都要在这里增加记录文件名字

2.同样这个/framework/model/cloud.mod.php 这文件。找到在把本地文件的 md5 值上传给服务器时,选择备份的源代码目录里的没有改过的文件。
为了方便比对,我在这里设置了父目录 /../source 目录。如果你想放根目录,就用 /source
if(!empty($ret['files'])) {
$ignore = change_file_list();
foreach($ret['files'] as $file) {
if(in_array($file['path'],$ignore)){
$entry = IA_ROOT .'/../source'.$file['path'];
}else{
$entry = IA_ROOT . $file['path'];
}
if(!is_file($entry) || md5_file($entry) != $file['checksum']) {
$files[] = $file['path'];
}
}
}

3.dock.ctrl.php 是远程下载文件,找到 download action 判断一下,当文件是属于这个列表中时,把文件放到另一个目录中,注意dirname 是父目录路径函数。
if (in_array($ret['path'], change_file_list())) {
$path = dirname(IA_ROOT).'/source'.$ret['path'];
}

4.在做升级时,我们要把这些改过的文件特别标识出来,也就是完成升级后,我们需要比对升级的内容,把新升级的补充到我们的文件中,在这里,我加了一个红色的小*号
/web/themes/default/cloud/upgrade.html


{php $change_file_lists = change_file_list('application');}
{loop $upgrade['files'] $line}


{if in_array($line,$change_file_lists)}*{/if}{if is_file(IA_ROOT . $line)}M{else}A{/if}{$line}
{/loop}


5.用比较软件比较两个目录就好了,只需要操作之间列表里打红星的文件就行了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值