欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

如何将系统的data目录迁移到web以外目录

shiping1 的头像

data目录是系统缓存和配置文件的目录,一般都有可以读写的权限,只要是能够写入的目录都可能存在安全隐患,很多站长甚至给予这个目录可执行的权限,更 是非常危险,所以我们建议将这个data目录搬移出Web可访问目录之外。本篇将介绍如何将data目录搬移出Web访问目录。

本操作需要用户对DedeCMS系统有较高的了解,如果您感觉自己不太掌握,可以考虑选择官方安全相关服务。点击查看

1.将data目录转移到非Web目录

我们这里举例“D:\dedecms\v57”为我们系统的根目录,我们需要将目录下的data文件夹(如图1)迁移要上一级目录(非Web目录),简单的办法直接剪切或者拷贝即可。

我们移动上一级目录中,注意观察文件路径。

 

2.修改DEDEDATA目录的配置常量

找到系统目录下/include/common.inc.php文件,修改DEDEDATA常量为你的系统目录。

 

3.配置tplcache缓存文件目录

进入系统后台,在配置中修改tplcache目录为你想对目录。

 

好了,这样我们就将data目录顺利迁移出去了。

(有可能linux 禁止访问 网站目录外的目录 ,此时要注意让它不禁止)(如何不禁止,忘记了 好像wdcp 或者什么景安的控制面板的后台有这个功能 如果有必要 可以借鉴这个(apache配置:禁止访问网站根目录外的文件)看看)

本操作目前仅在V57系统中测试有效,其他版本系统可能需要进行调整。
 
搬迁过之后首页老是跳转到安装目录,打开index.php查看代码:打开index.php查看代码:

if(!file_exists(dirname(__FILE__).'/data/common.inc.php'))

 

这里还得修改data路径,立刻修改,刷新,首页不再跳转。

 

好了,这样我们就将data目录顺利迁移出去了。

可是我们又发现另外一个问题,登录管理后台时验证码不显示了。

 

 

解决方法:

开include下的vdimgck.php, 找到如下代码:

复制代码代码如下:
require_once (dirname(__FILE__).'/../data/safe/inc_safe_config.php');
require_once (dirname(__FILE__).'/../data/config.cache.inc.php');
$config = array(
'font_size' => 14,
'img_height' => $safe_wheight,
'word_type' => (int)$safe_codetype, // 1:数字 2:英文 3:单词
'img_width' => $safe_wwidth,
'use_boder' => TRUE,
'font_file' => dirname(__FILE__).'/data/fonts/ggbi.ttf',
'wordlist_file' => dirname(__FILE__).'/data/words/words.txt',
'filter_type' => 5);
$sessSavePath = dirname(__FILE__)."/../data/sessions/";


将上面代码中的data路径做相应的调整,比如上面3步操作是将data移到根目录的上一级目录,我们这里对data的路径加一个“/..”,改后如下:

复制代码代码如下:
require_once (dirname(__FILE__).'/../../data/safe/inc_safe_config.php');
require_once (dirname(__FILE__).'/../../data/config.cache.inc.php');

$config = array(
'font_size' => 14,
'img_height' => $safe_wheight,
'word_type' => (int)$safe_codetype, // 1:数字 2:英文 3:单词
'img_width' => $safe_wwidth,
'use_boder' => TRUE,
'font_file' => dirname(__FILE__).'/data/fonts/ggbi.ttf',
'wordlist_file' => dirname(__FILE__).'/data/words/words.txt',
'filter_type' => 5);
$sessSavePath = dirname(__FILE__)."/../../data/sessions/";

好了,这样就可以了。

 备注:如果data已经移出根目录外面也设置了禁止执行权限,uploads也设置了禁止执行权限

登录后台却还是提示data和uploads有执行权限,那么就在根目录下建立一个data空目录,并在httpd.conf中把这个空目录data设置为禁止执行php权限即可

 

还有个问题  /织梦后台路径/index_testenv.php

 中大约 142 行 左右 要改一下 data的路径

(if(TestExecuteable(DEDEROOT.'/../data',$cfg_basehost) || TestExecuteable(DEDEROOT.'/uploads',$cfg_basehost)))

否则循环 检测路径     执行 它里面的 TestWriteable  这个方法 会耗很长时间

 

普通分类: