#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);