unlink($filename) : Permission denied Warning


unlink($filename) : Permission denied Warning

当我尝试使用unlink()时,我得到Permission denied warning .

我已经创建了一个函数来从内容目录中删除图像:

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);
}
上面的

代码不是在任何函数中(运行过程方式),这给了我积极的回应。如何解决这个问题?

在这种情况下,你不能用php删除文件,因为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";
}

不幸的是,您的代码假设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';
    }
}

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

根据手册选择:

尝试将文件文件名的所有者更改为user user。只有超级用户可以修改文件的所有者。

只有当你的应用程序以root身份运行时,它才会工作,我敢肯定这不是情况。

根据手册chmod:

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

基本上,如果你没有正确的权限,chmodunlink将不起作用。

尝试更改内容目录的权限

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