【问题标题】:Permission Denied when trying to delete image using unlink in codeigniter尝试使用 codeigniter 中的取消链接删除图像时权限被拒绝
【发布时间】:2018-12-12 04:46:26
【问题描述】:

我一直在关注这个帖子CodeIgniter : How to delete uploaded image from folder的答案,但是当我按下删除链接时,我的程序处理了该功能,但数据没有被删除。

这是我的数据库表 My table name's datatraining

这是我的控制器代码

function hapus(){
    $group_id = $this->input->post('ID');
    $group_picture = $this->input->post('namafile');
    $this->m_admin->hapus_data($group_id, $group_picture);
    redirect('datatraining');
}

这是我的模型代码

function hapus_data($group_id, $group_picture){
    $this->db->where('ID', $group_id);
    unlink("./gambar/hasil/data_trainingtanpakotak/".$group_picture);
    $this->db->delete('datatraining', array('ID' => $group_id));
}

这是我的视图代码

<?php 
                            foreach($datatraining as $u){ 
                                ?>
                                <tr>
                                    <td><?php echo anchor('datatraining/hapus/'.$u->namafile,'Hapus'); ?></td>
                                    <td><?php echo $u->ID ?></td>
                                    <td><img height="50" width="50" src="<?php echo base_url().'gambar/hasil/data_trainingtanpakotak/'.$u->namafile; ?>"></td>
                                    <td><?php echo $u->r ?></td>
                                    <td><?php echo $u->g ?></td>
                                    <td><?php echo $u->b ?></td>
                                    <td><?php echo $u->Label ?></td>
                                </tr>
                            <?php } ?>

感谢你们的帮助

【问题讨论】:

  • 在您的模型代码unlink("./gambar/..... 中为什么要使用./ 定义从根目录开始的路径?也许这导致了权限问题?尝试将文件夹放入您的项目目录或尝试.. 访问正确的目录。
  • 还要确保您要从中删除的文件夹具有 777 权限
  • 使用 FCPATH 或 APPPATH 获取您的文件

标签: php image codeigniter delete-file unlink


【解决方案1】:

首先为该文件夹授予 0777 的权限,并使用带有取消链接的完整路径,如下所示:

`unlink(FCPATH."gambar".DIRECTORY_SEPARATOR."hasil".DIRECTORY_SEPARATOR."data_trainingtanpakotak".DIRECTORY_SEPARATOR.$group_picture);`

我在这里使用了FCPATH,假设您要从中删除的目录在您的 FCPATH 中

【讨论】:

    【解决方案2】:

    感谢所有回答的家伙,它已经奏效了。 这是我的完整代码,以防其他人将来需要它

    查看:

    <tbody>
                                <?php 
                                foreach($datatraining as $u){ 
                                    ?>
                                    <tr>
                                        <td><?php echo anchor('datatraining/hapus/'.$u->namafile,'Hapus'); ?></td>
                                        <td><?php echo $u->ID ?></td>
                                        <td><img height="50" width="50" src="<?php echo base_url().'gambar/hasil/data_trainingtanpakotak/'.$u->namafile; ?>"></td>
                                        <td><?php echo $u->r ?></td>
                                        <td><?php echo $u->g ?></td>
                                        <td><?php echo $u->b ?></td>
                                        <td><?php echo $u->Label ?></td>
                                    </tr>
                                <?php } ?>
                            </tbody>
    

    控制器:

    function hapus($a,$b){
        $group_id = $this->input->post('ID');
        $group_picture = $this->input->post('namafile');
        unlink(FCPATH."/gambar/hasil/data_trainingtanpakotak/".$a."/".$b);
        $this->m_admin->hapus_data($group_id, $a."/".$b);
        redirect('datatraining');
    }
    

    型号:

    function hapus_data($group_id, $group_picture){
        $this->db->where('namafile', $group_picture);
    
        $this->db->delete('datatraining', array('namafile' => $group_picture));
    }
    

    【讨论】:

    • 为该文件夹授予 777 权限是一个非常糟糕的主意。其余的我可以同意。该文件夹只需为 775,您必须确保该文件夹的所有权是正确的。就像您使用 apache 一样,所有权应该类似于 www-data:YOURUSERNAME 这样 apache 可以从该文件夹中添加或删除内容,并且您不授予所有人写入权限。
    猜你喜欢
    • 1970-01-01
    • 2014-08-02
    • 2014-12-24
    • 2012-11-15
    • 2017-12-23
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    相关资源
    最近更新 更多