DEDEcms织梦修改common.inc.php权限后刷新后台权限恢复解决

在使用dedecms织梦系统搭建网站后台之后,进入后台首页,会弹出织梦安全提示,提示用户修改安全设置。

dedecms织梦安全提示

 

提示1很好解决,在ftp中将文件夹权限去除执行权限即可。

提示2在解决时,如果只是按照提示1的解决方法在ftp中修改权限之后,当我们在网站后台刷新时,common.inc.php文件的权限又会恢复为读写(777)的权限。

这对这个问题的解决方法,我尝试了很多网站搜来的招数,但是查看之后都没有效果,之后通过查看网站代码后发现,其实这个安全提示有一行不该存在代码影响了。

具体是:

打开网站/dede文件夹,找到index_testenv.php,转到115行至157行代码段:

下面的代码段是用来判定文件是否具有写权限的,如果有写权限,则会跳出提示。但是在代码中有一行代码:@chmod($pathfile,0777);  这行代码在判断执行的时候,会再次修改所判断的文件的权限为777,所以,我们只需要将这行代码给注释掉,后台再刷新的时候,就不会变更common.inc.php文件夹的权限了。注释只有,如果我们修改common.inc.php文件夹权限为644权限,提示2依然会出来,所以,直接修改为444之后,提示2就不会再提示了。

if(!function_exists('IsWritable'))
{
// 检测是否可写
function IsWritable($pathfile) {
$isDir = substr($pathfile,-1)=='/' ? true : false;
if ($isDir) {
if (is_dir($pathfile)) {
mt_srand((double)microtime()*1000000);
$pathfile = $pathfile.'dede_'.uniqid(mt_rand()).'.tmp';
} elseif (@mkdir($pathfile)) {
return IsWritable($pathfile);
} else {
return false;
}
}
@chmod($pathfile,0777);   //这行代码在检测之后,会默认给修改777权限,是导致修改之后,刷新就变回777权限的根本原因。

$fp = @fopen($pathfile,'ab');
if ($fp===false) return false;
fclose($fp);
$isDir && @unlink($pathfile);
return true;
}
}

// 检测权限
$safeMsg = array();
//if(TestExecuteable(DEDEROOT.'/data',$cfg_basehost) || TestExecuteable(DEDEROOT.'/uploads',$cfg_basehost))
//{
// $helpurl = "http://help.dedecms.com/install-use/server/2011/1109/2124.html";
// $safeMsg[] = '目前data、uploads有执行.php权限,非常危险,需要立即取消目录的执行权限!
//
// 查看如何取消';
//}
$dirname = str_replace('index_body.php', '', strtolower($_SERVER['PHP_SELF']));
if(preg_match("#[\|/]dede[\|/]#", $dirname))
{
$safeMsg[] = '默认管理目录为dede,需要立即将它更名;';
}
if(IsWritable(DEDEDATA.'/common.inc.php')) //这里是提示2 调用判断common.inc.php是否有写权限的
{
$safeMsg[] = '强烈建议data/common.inc.php文件属性设置为644(Linux/Unix)或只读(NT);';
}
$rs = TestAdminPWD();
if($rs < 0)
{
$linkurl = "马上修改";
switch ($rs)
{
case -1:
$msg = "没有更改默认管理员名称admin,建议您修改为其他管理账号!{$linkurl}";
break;
case -2:
$msg = "没有更改默认的管理员名称和密码,强烈建议您进行更改!{$linkurl}";
break;
}
$safeMsg[] = $msg;
}

此条目发表在dedecms-织梦分类目录,贴了, 标签。将固定链接加入收藏夹。