无法取消链接php中的文件

时间:2014-01-06 17:08:47

标签: php

我目前正在尝试取消链接PHP中的上传文件。为此,我调用了一个ajax函数,它将相对文件路径传递给另一个页面,删除该文件。

但是,我一直收到错误

unlink(..filepath...) no such files or directory in C:.....

环顾四周,我发现unlink可能会遇到相关文件路径问题,所以我尝试使用

将相对文件转换为绝对文件路径
$newfilepath=realpath($filepath);

但是当我尝试回显realpath的结果以检查它是否成功执行时,我得到了结果

bool(false)

当我查看手册时,我看到了

Note:
The running script must have executable permissions on all directories in the 
hierarchy, otherwise realpath() will return FALSE.

当文件上传时,它们被保存到CHMOD 0644的目录中,我猜这是导致问题的原因。如果是这样,有没有办法取消链接文件?

P.S我的网站用户通过使用表格将文件上传到我的服务器,因此CHMOD

编辑:

功能:

function DeleteImageDP(){

    var itemid=$('#DisplayDeleteItemID').val();
    var file=$('#DisplayDeleteFilePath').val();
    var filepath=encodeURIComponent(file);
    var itempicid=$('#DisplayDeleteItemPicID').val();
    var cfm=confirm("Confirm deletion of picture? ( Note: Picture wil be deleted permanently.");
    if(cfm == true)
    {
        $.ajax({

        url:"delete/deletedp.php",
        type:"POST",
        data:"ItemID="+itemid+"&FilePath="+filepath+"&ItemPicID="+itempicid,
        success:function(){

            alert("Image successfully deleted.");
            $('#ImagePreviewDP').prop('src','').hide();
            $('#ImagePreviewDPValidate').val('');
            $('#DisplayDelete').hide();

            $('#ItemDetailsContainer').trigger('change');

        },
        error:function(){

            alert("Image could not be deleted due to an error.");

        }

        });
        return true;
    }
    else
    {
        return false;
    }

};

页面调用:

$bizid=$_SESSION['BizID'];
$itemid=$_POST['ItemID'];
$file=$_POST['FilePath'];
$filepath=realpath($file);
$itempicid=$_POST['ItemPicID'];
//empties dp field in items table
$delete=$cxn->prepare("UPDATE `Items` SET `ItemDP`=:deleted WHERE `BusinessID`=:bizid AND `ItemID`=:itemid");
$delete->bindValue(":bizid",$bizid);
$delete->bindValue(":itemid",$itemid);
$delete->bindValue(":deleted","NULL");
$delete->execute();
//removes from itempics
$deletepic=$cxn->prepare("DELETE  FROM `ItemPics` WHERE `BusinessID`=:bizid AND `ItemID`=:itemid AND `ItemPicID`=:itempicid AND `FilePath` LIKE :search");
$deletepic->bindValue(":search","%DP");
$deletepic->bindValue(":bizid",$bizid);
$deletepic->bindValue(":itemid",$itemid);
$deletepic->bindValue(":itempicid",$itempicid);
$deletepic->execute();

if($deletepic)
{
    unlink($filepath);
    return ( true );
}
else
{
    return ( false );
}

1 个答案:

答案 0 :(得分:0)

看起来您正在获取相对于HTML页面的URL,但处理删除的实际PHP文件是一个目录(即/delete/内)。

因此,您需要修改PHP端的相对URL以确保它找到正确的文件。

尝试使用以下代码更新PHP文件:

unlink('../'.$filepath);