Невозможно отменить файл в Codeigniter

В моем проекте у меня есть папка, защищенная в корне. Пакет проекта выглядит так:

application secure system ........... 

Внутри защищенной папки я загружаю некоторые изображения в форме submit using

 $config1['upload_path'] = './secure/'; $ext = end(explode(".", $_FILES['thumb_image']['name'])); $config1['file_name'] = time().$_FILES['thumb_image']['name']; $config1['allowed_types'] = 'jpg|png|jpeg|gif|bmp|jpe|tiff|tif'; $this->load->library('upload', $config1); $this->upload->initialize($config1); $this->upload->do_upload('thumb_image'); 

и он работает правильно. Теперь, когда вы редактируете детали, используя другую форму, если я загружаю новое изображение вместо текущего файла изображения, я хочу отключить текущий, а затем загрузить новый файл.

Для этого я использую код:

 unlink(base_url("secure/".$data['row']->videothumbnail)); 

Я также пробовал

 unlink('/secure/'.$data['row']->videothumbnail); 

где $data['row']->videothumbnail) – текущий файл изображения из базы данных. Новый файл успешно загружен. Но старый файл не получает отсоединения. Я установил разрешение безопасной папки на 777 . Но изображения загружаются с разрешения только для чтения. Из-за этого он не получает отцепки?

Может ли кто-нибудь помочь мне решить эту проблему?

Заранее спасибо.

Попробуй это:

Задайте разрешение динамически, используя:

 @chmod('./secure/'.$data['row']->videothumbnail, 0777); 

затем попробуйте unlink:

 @unlink('./secure/'.$data['row']->videothumbnail); 

Попробуйте повторить путь, который вы предоставляете, чтобы отключить функцию.

Это должно быть примерно так:

 base_url()."secure/".$data['row']->videothumbnail; 

У меня также была эта проблема даже после установки правильного разрешения на папку. Но для меня работал следующий код.

 unlink(realpath(APPPATH . '../uploads').'/'.$ImageName); 

Попробуйте использовать $_SERVER['DOCUMENT_ROOT'] вместо base_url

 $this->load->helper("file") unlink(base_url('folder/file.ext')); 

место нахождения:

\ Приложение \ контроллер

\ Система \ библиотеки

** папка \ file.ext **

 $unlinkUrl = "secure/".$data['row']->videothumbnail; if(file_exists($unlinkUrl)){ unlink($unlinkUrl); } else{ echo $unlinkUrl." is not available"; } 

Я думаю, вы просто делаете глупую ошибку.

  • Во-первых, первый параметр unlink должен быть относительным путем или абсолютным путем, но функция base_url вернет вам путь, содержащий имя домена, КАК ВЫ УДАЛИТЬ ФАЙЛ НА ДИСТАНЦИОННОМ СЕРВЕРЕ?

  • Во-вторых, '/secure/'.$data['row']->videothumbnail здесь не относительный путь, а абсолютный путь

ВЫ ДОЛЖНЫ изменить его в /the/absolute/path/to/secure/ or ./the/relative/path/to/secure/ ( НЕ ./the/relative/path/to/secure/ )

используйте это для отсоединения

 $oldthumb = "secure/".$data['row']->videothumbnail; @unlink($oldthumb); 

Сначала загрузите $this->load->helper("file") а затем отсоедините его

 unlink("secure/".$data['row']->videothumbnail); 
 if ($rowAffected > 0) { if ($isMediaUpload) if (file_exists('./uploads/' . $this->input->post('img_url'))) unlink('./uploads/' . $this->input->post('img_url')); redirect('/admin/configration', 'location'); }