织梦php无法编辑,织梦dedecms使用ftp无法修改data/common.inc.php文件属性

本人在使用织梦dedecms建设网站的过程中,发现一个非常奇怪的问题,后台出现安全提示:强烈建议data/common.inc.php文件属性设置为644(Linux/Unix)或只读(NT);

16add77d179689c2d621c8ea32866ffa.png

本人按照提示使用ftp对文件权限进行修改,但是修改过后,在后台刷新一下,还是会出现修改common.inc.php文件属性的提示。在ftp刷新一下,发现此文件的属性又变为777。本人又重新修改了一下,还是会变为先前的样子。本人通过虚拟主机的后台,使用文件管理功能进行文件属性的修改,但还是先前的样子,也就是说此文件属性没有办法修改。那是怎么回事呢?是什么原因导致无法修改common.inc.php文件属性呢?

本人在网上查找解决方法,但是很多还是让修改文件的权限为644、444之类的,不过都不行。本人想可能是织梦程序本身的问题导致,于是查看织梦后台安全检查文件dede/index.testenv.php,终于发现了问题。本人的修改方法如下:

在index.testenv.php文件中查找:

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);

$fp = @fopen($pathfile,'ab');

if ($fp===false) return false;

fclose($fp);

$isDir && @unlink($pathfile);

return true;

}

}

此判断条件大概在115行。

在130行,chmod是修改文件权限函数,其中有个数字0777,这是文件权限。结合后面的这段代码:

if(IsWritable(DEDEDATA.'/common.inc.php'))

{

$safeMsg[] = '强烈建议data/common.inc.php文件属性设置为644(Linux/Unix)或只读(NT);';

}

common.inc.php文件的权限总是被修改为777,于是本人将函数中的数字777修改为644,如下所示:

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,0644);

$fp = @fopen($pathfile,'ab');

if ($fp===false) return false;

fclose($fp);

$isDir && @unlink($pathfile);

return true;

}

}

修改过index.testenv.php文件后上传至对应位置。虽然文件common.inc.php的属性变为644限,但是后台刷新后,还是出现提示。

本人将

if(IsWritable(DEDEDATA.'/common.inc.php'))

{

$safeMsg[] = '强烈建议data/common.inc.php文件属性设置为644(Linux/Unix)或只读(NT);';

}

这段代码的if条件修改为了:if(!IsWritable(DEDEDATA.'/common.inc.php'))

刷新后台,不再出现提示,问题解决,但是并不确定这种方法是否有什么后遗症,如果大家有更好的方法,欢迎一起讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值