【问题标题】:Unable to delete file after uploaded. (move_uploaded_file)上传后无法删除文件。 (move_uploaded_file)
【发布时间】:2014-03-17 03:29:43
【问题描述】:

向正在阅读本文的人问好!

目前我有一个 php 页面,允许用户将文件上传到我的服务器的指定目录。这是我用来做的:

if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1) {

chmod($uploadpath, 0777);

$uploadpath = $uploadpath . basename( $_FILES['fileup']['name']);       // gets the file name
$sepext = explode('.', strtolower($_FILES['fileup']['name']));
$type = end($sepext);       // gets extension
list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']);     // gets image   width and height
$err = '';         // to store the errors


// If no errors, upload the image, else, output the errors
if($err == '') {
if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) { 
chmod($uploadpath, 0777);

  echo '<br/><br/>File successfully uploaded:' .$uploadpath.'</b>';

}
else echo  '<b>Unable to upload the file.</b>';
}
else echo $err;
}

上传部分就像一个魅力,文件上传到服务器上但是一旦上传,我无法以另一个用户的身份删除文件。目前上传文件的用户是 Apache 用户“www-data”。

我确实认为问题与为我尝试使用的上传文件设置的权限有关:

chmod($uploadpath,0777);

但这无济于事.. 文件仍然无法删除。如果我是 root 使用“rm -rf /directorypath”,我可以通过 SSH 删除它,但如果我浏览它,则无法删除它。

有什么建议吗?非常感谢任何帮助!

【问题讨论】:

    标签: php html linux apache debian


    【解决方案1】:

    如果你想删除一个文件,你可以使用 php unlink !如果那是一个目录,那么rmdir

    【讨论】:

    • 好吧,我不想用 apache 删除它。我也有 samba 托管。我希望能够从 apache 的“www-data”以外的其他用户那里删除该文件。
    【解决方案2】:

    你可以使用 unlink('upload_folder/'.$image['file_name']);

    【讨论】:

    • 与 Pratik 的答案相同的原因,这无济于事,但感谢您的回答!
    【解决方案3】:

    尝试允许对您的图像文件夹的权限,而不仅仅是下面的文件。

    chmod($upload_path, 0777);
    

    行前

    $uploadpath = $uploadpath . basename( $_FILES['fileup']['name']); 
    

    请注意,777 无论如何都不是超级安全的。最佳做法是使用组 www-data 管理用户

    【讨论】:

    • 是的,我意识到这不是最安全的方法。我只是想找到一些有用的东西。我会试试这个,让你知道。谢谢
    • 不,不走运:(它仍然不允许我删除文件。
    猜你喜欢
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 2013-08-05
    • 2015-01-06
    相关资源
    最近更新 更多