@zeni1agent

Почему у меня не удаляется файл?

Я сделал вот такой код для скачивания файла
if ($_POST['add']){  
print_r($_FILES);  
$converting_name = pathinfo($_FILES['failename']['name']);
$format= $converting_name['extension'];
if (in_array($format, ['jpg','png'])) {  
echo "формат файла ";
if ($_POST['add_radio'] and $_POST['add_select'])	{  
echo "Все активно ";
$SDR = $_SERVER['DOCUMENT_ROOT']; 
$SHH = 'http://'.$_SERVER['HTTP_HOST']; 
$file_name =  date("H.i.s") . $_FILES['failename']['name'] ; 
$url_absol = $SDR . '/wor/wp-content/uploads/pop/' . $file_name ; 
$url_relat = str_replace($SDR, $SHH, $url_absol);  
$meta_name = $_POST['add_radio'] . $_POST['add_select'];  
$url_add= get_post_meta(get_the_ID(), $meta_name, true) ;
if ($url_add){
echo "удаленно ";
$meta_basename = basename($url_add).PHP_EOL ;
$absolute_del = $SDR . '/wor/wp-content/uploads/pop/'.$meta_basename ;	
unlink($absolute_del);  
}
update_post_meta(get_the_ID(), $meta_name, $url_relat);  
move_uploaded_file($_FILES ['failename']['tmp_name'], $url_absol);  
}
}
}

И Все работает как надо кроме unlink
Он не в какую не хочет удалять файл
Сообщение удаленно выводится и абсолютная ссылка правильная я даже могу удалить ее если впишу вручную
unlink('C:/xampp/htdocs/wor/wp-content/uploads/pop/14.48.50_Vif-NENm4s.jpg');

Но автоматически он удалять его не хочет
Интересно то что если добавить код удаления после всего кода
if ($_POST['add']){ 


}
 $gg = get_post_meta(get_the_ID(), 'image_type1', true) ;
$fffr = basename($gg).PHP_EOL ;
$yuui = $_SERVER['DOCUMENT_ROOT']. '/wor/wp-content/uploads/pop/'.$fffr ;
echo $yuui;
unlink($yuui);

То он удалит файл закруженный только что А если написать до $_POST['add'] то удалять прошлый файл который был загружен до он откажется
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
@zeni1agent Автор вопроса
Удивительно но я смог найти решение проблемы.
Мне пришлось обратно перевести старое мето поле из относительного в абсолютный путь
if ($url_add){
echo "удаленно ";
$url_relat_del = str_replace( $SHH, $SDR, $meta_name);
unlink($url_relat_del );  
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
потому, что такого файла, как вы просите, нет
Посмотрите внимательно этот участок кода
$meta_basename = basename($url_add).PHP_EOL ;
$absolute_del = $SDR . '/wor/wp-content/uploads/pop/'.$meta_basename ;	
unlink($absolute_del);

В первой его строке Вы зачем-то пристыковываете к имени файла символ конца строки
Потом собираете путь и просите удалить файл в названии которого есть символ конца строки.

А Вообще в справке к unlink указано, что она возвращает значение и в результате ошибки генерирует варнинг. Попробуйте заглянуть в варнинг.

Включите себе отладчик, сможете прогонять код по строкам и видеть переменные. Очень помогает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы