Не удается отменить связь с файлом в Codeigniter

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

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

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

$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. Но изображения загружаются с разрешением только для чтения. Это из-за этого не отключается?

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

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


person Jenz    schedule 02.04.2014    source источник
comment
спасибо, я пропустил. до / безопасный.   -  person Jenz    schedule 02.04.2014
comment
Вы можете попробовать выполнить chmod для файла после загрузки, чтобы изменить разрешения   -  person mic    schedule 02.04.2014
comment
если путь к каталогу неверен, тогда unlink функция показывает предупреждение, вы можете показать предупреждение ??   -  person Girish    schedule 02.04.2014
comment
теперь он работает .. я упустил проблему. перед / secure / путем ..   -  person Jenz    schedule 02.04.2014
comment
Вы можете взглянуть на этот URL-адрес stackoverflow.com/questions / 12320589 /   -  person user3470953    schedule 02.04.2014


Ответы (9)


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

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

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

затем попробуйте разорвать связь:

@unlink('./secure/'.$data['row']->videothumbnail);
person Remya Murali    schedule 02.04.2014

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

Должно получиться примерно так:

base_url()."secure/".$data['row']->videothumbnail;
person Hammad    schedule 02.04.2014
comment
это все равно не поможет, потому что вы не можете отсоединиться от URL! - person mic; 02.04.2014
comment
Гм - нет, это не так ... base_url предоставит вам HTTP путь, для функции unlink требуется путь к каталогу ... - person Girish; 02.04.2014

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

unlink(realpath(APPPATH . '../uploads').'/'.$ImageName);      
person Jasnan    schedule 01.06.2014

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

person Manikandan    schedule 10.07.2014

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

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

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

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

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

person Jessé Catrinck    schedule 11.07.2014

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

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

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

ВЫ ДОЛЖНЫ изменить его на /the/absolute/path/to/secure/ или ./the/relative/path/to/secure/ (НЕ ПРОПУСТИТЕ ТОЧКУ)

person user3024431    schedule 30.08.2014

используйте это, чтобы отключить

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

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

unlink("secure/".$data['row']->videothumbnail);
person Ankit    schedule 27.05.2014

Хоть я и опоздал, но кому-то это может понадобиться.

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

**FCPATH** - path to front controller, usually index.php
**APPPATH** - path to application folder
**BASEPATH** - path to system folder.
person stevebaros    schedule 18.03.2019