【问题标题】:permission denied for deleting image using unlink in codeigniter使用 codeigniter 中的取消链接删除图像的权限被拒绝
【发布时间】:2019-12-09 12:20:08
【问题描述】:

我有一个用于从文件夹中删除图像的代码,然后我遇到了一个问题,我无法获得取消链接此文件的权限。

这是警告信息

消息:取消链接(C:\xampp\htdocs\gimbot\gambar/):权限被拒绝

这是我的代码

private function hapusGbr($id){
    $image = $this->db->get_where('artikel',array('id'=>$id))->row();

    unlink(FCPATH."gambar/".$image[0]['image']);
}

【问题讨论】:

  • 检查文件夹权限,
  • 你使用的是row(),所以你应该使用$image->image,还要检查文件夹的权限

标签: php codeigniter


【解决方案1】:

您没有为您的文件夹设置正确的权限。 请在您的代码中更改这样的权限:

chmod(FCPATH."gambar", 775);
private function hapusGbr($id){
    $image = $this->db->get_where('artikel',array('id'=>$id))->row();

    unlink(FCPATH."gambar/".$image['image']);
}

【讨论】:

  • 使用->row() 需要[0] 吗?应该是$image->image
  • @DevsiOdedra 是的,这不是必需的,我已经更新了答案。
  • 如果unlink 失败,chown 可能会失败,因为运行 php 的 Web 服务器对 FCPATH 的父目录没有写访问权或所有权访问权。您可能需要从超级用户 shell 执行 chown
  • 如果我使用 '$image->image' 它会显示错误“试图获取非对象的属性”,并且文件仍然无法删除
  • @kevin 我的错,我已经更新了答案。请改用 $image['image']。
【解决方案2】:

我认为你的文件路径是错误的。请尝试为 xampp 进行硬编码。

public function hapusGbr($id){
       $image = $this->db->get_where('artikel',array('id'=>$id))->row();
        $file = FCPATH."gambar/".$image->image;


        $folder = 'C:\\xampp\htdocs\yoursite\youruploadfolder';
        chown($folder,777);
        unlink($_SERVER['DOCUMENT_ROOT']."/gambar/$image->image");

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-24
    • 2012-11-15
    • 2017-12-23
    • 2019-06-26
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多