Unlink не удаляет файл

#php

#php

Вопрос:

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

Сначала я создаю каталог, который будет содержать файлы. И я создаю его следующим образом : mkdir($filepath , 0777 , true);

Часть с созданием файла работает просто идеально. Вернемся к странице удаления, я пытаюсь сделать это следующим образом : unlink("PROOT . 'files' . DS . $dir . DS . $settings->name");

И PROOT это корень файла, поскольку я занимаюсь объектно-ориентированным программированием и делаю это из соображений безопасности, а также DS это разделитель.

vardump Параметр из link будет выглядеть следующим образом /framework/files/4/peep(2).jpg , а ссылка на файл выглядит следующим образом http://localhost/framework/files/4/peep(2).jpg , и я на 100% уверен, что проблемы с PROOT или DS нет.

Комментарии:

1. unlink("PROOT . 'files' . DS . $dir . DS . $settings->name"); синтаксически некорректно. Вы должны получить ошибки незакрытых кавычек или ваше расширение переменной работает некорректно из-за ваших двух внешних двойных кавычек

2. unlink("PROOT . 'files' . DS . $dir . DS . $settings->name"); должно быть: unlink(PROOT . "files" . DS . $dir . DS . $settings->name);

3. @bassxzero — похоже, они могут просто удалить " , если это константы. unlink(PROOT . 'files' . DS . $dir . DS . $settings->name);

4. @ArtisticPhoenix если эхо-сигнал файла считается открытым, тогда да, но я делаю это методом, который перенаправит меня после его удаления . Поскольку у меня есть кнопка удаления, которая вызовет метод с идентификатором.

5. Вам нужно поставить $_SERVER['DOCUMENT_ROOT'] в начале пути, чтобы получить путь к файловой системе, соответствующий URL.

Ответ №1:

Есть две проблемы.

Во-первых, у вас есть кавычки вокруг конкатенации, которая делает все буквальным, за исключением $dir и $settings->name .

Во-вторых, переменная, которую вы должны использовать для root, является $_SERVER['DOCUMENT_ROOT'] , не PROOT .

Так что это должно быть:

 unlink($_SERVER['DOCUMENT_ROOT'] . 'files' . DS . $dir  . DS . $settings->name);