Discuz教程网

[常见问题] 关于DISCUZ升级问题,

[复制链接]
authicon dly 发表于 2013-11-26 11:35:39 | 显示全部楼层 |阅读模式
discuz补丁包出的很快,过段时间在后台就可以看到系统提醒你升级到最新版,如果只是功能的改变不升级也罢,如果涉及到安全或者系统效率或稳定的补丁包,那是一定要升级,不过苦恼在于discuz系统的一些文件被自己改动过,如果要升级就得一个一个的找,先看看自己修改过没有,如果没有再直接覆盖文件,如果有修改,再看看自己修改的和discuz发布的冲突不。这个过程前边几步是可以通过程序完成的,自己写了个小脚本,贴出来共享下,最后会把源文件附上。

其实很简单,只需要几十行代码就可以搞定,前提是你修改过的文件一定用自己的注释,比如本人通常修改过会标注web的域名,比如:
// edit by vivinice.com
通过这个就可以很容易知道这个文件是否被修改过。

如果你改过的文件没有统一的标注,请忽略本帖子,猛击右上角X关闭本窗口。
如果你根本不懂代码,也请执行以上操作,因为此操作很危险。

文件组织:
修改update.php,将vivinice.com替换为你自己修改文件的标注。
把这个update.php放到discuz源码目录下,比如source/update.php
那么你的升级文件也就是官方的补丁应该就在source/upload/这个目录下,然后运行update.php就可以了,如果出现提示冲突的,就得人为的进行解决,不过最近几次的升级都很简单,没有出现冲突。

以下是源码:
  1. <?php
  2. define('UPDATE_DIR', 'upload');
  3. define('DS', DIRECTORY_SEPARATOR);
  4. define('ROOT_PATH', dirname(__FILE__));
  5. define('UPDATE_PATH', ROOT_PATH.DS.UPDATE_DIR);

  6. foreach (get_files(UPDATE_PATH) as $src_file) {
  7.         $dst_file = str_replace(DS.UPDATE_DIR.DS, DS, $src_file);
  8.         
  9.         if (preg_match('/\.(php|htm|js)$/i', $dst_file)) {
  10.                 $content = file_get_contents($dst_file);
  11.                 if (stripos($content, "vivinice.com")!==false) {
  12.                         echo "<p style="color:red;">$dst_file MODIFIED, PLEASE UPDATE BY YOUSELF.</p>";
  13.                         continue;
  14.                 }
  15.         }
  16.                
  17.         if (copy($src_file, $dst_file)) {
  18.                 echo "<p>COPY $src_file TO $dst_file SUCCESS.</p>";
  19.                 unlink($src_file);
  20.         } else {
  21.                 exit ("<p>COPY $src_file TO $dst_file FAILURE.</p>");
  22.         }
  23. }




  24. function get_files($dir) {
  25.         $files = array();
  26.         foreach (glob($dir.DS.'*') as $filename) {
  27.                 if (is_dir($filename)) {
  28.                         $files = array_merge($files, get_files($filename));
  29.                 } else {
  30.                         $files[] = $filename;
  31.                 }
  32.         }
  33.         return $files;
  34. }
复制代码
游客,如果您要查看本帖隐藏内容请回复



上一篇:首页N格如何将底部新会员改为其他?
下一篇:SEO页面头部优化提示内部错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2024-5-17 17:36

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表