unlink($ filename):权限被拒绝警告

时间:2015-07-23 16:59:25

标签: php unlink

当我尝试使用unlink()时,我的权限被拒绝了。

我创建了i函数来删除内容目录中的图像:

function del($fnam){
chmod('content/'.$fnam, 0777);   
chown('content/'.$fnam,465);
unlink('content/'.$fnam);   
}

我在论坛上阅读后使用了chmod()和chown(),但我仍然收到警告,图片也没有被删除。

当我从不同的位置打电话时,它如何以魅力运行。

if($temp2==1){      //For Delete
$sql="delete from blog where b_id=$temp1";
$im=fetch('blog','b_img','b_id='.$temp1);

//Deleting Image

    del($im);
}

上面的代码不在任何函数中(以程序方式运行),这给了我积极的回应。 如何解决?

4 个答案:

答案 0 :(得分:0)

不幸的是,您的代码假定chmodchown始终有效,这是一个不好的假设。

如果您没有正确的权限,他们也可能会失败。

更改这样的代码,它应该告诉你实际出错了什么

function del($fnam){
    if ( ! chmod('content/'.$fnam, 0777) )  {
        echo 'chmod failed';
    }
    if ( ! chown('content/'.$fnam,465) ) {
        echo 'chown failed';
    }

    if ( ! unlink('content/'.$fnam) ) {  
        echo 'unlink failed';
    }

}

答案 1 :(得分:0)

您没有得到预期的结果,因为:

根据手册chown

  

尝试将文件filename的所有者更改为用户user。只有超级用户才能更改文件的所有者。

只有当您的应用程序以root身份运行时才会起作用,我确信情况并非如此。

根据手册chmod

  

尝试将指定文件的模式更改为模式中的模式。

基本上,如果您没有正确的权限, chmod unlink 将无效。

答案 2 :(得分:0)

这种情况你不能用php删除文件,因为如果你不能从上面改变权限,你就没有足够的权限,试试用FTP攻击 (我知道它不常见,但它的作品,它可以帮助你个人使用)

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to delete $file
if (ftp_delete($conn_id, $file)) {
 echo "$file deleted successful\n";
} else {
 echo "could not delete $file\n";
}

答案 3 :(得分:-1)

尝试更改内容目录的权限

uiHandler.postDelayed(new Runnable() {
    @Override
    public void run() {
        Intent goToMenu = new Intent(getApplicationContext(), MainMenu.class);
        goToMenu.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(goToMenu);
    }
}, 500);