Как использовать функцию Unlink()
Я пытаюсь использовать функцию PHP unlink()
для удаления определенного документа в папке. Этой конкретной папке уже присвоены полные права пользователя IIS.
Код:
$Path = './doc/stuffs/sample.docx';
if (unlink($Path)) {
echo "success";
} else {
echo "fail";
}
Это приведет к сбою возврата. В sample.docx действительно находится на этом конкретном пути. Пожалуйста, посоветуйте.
5 answers
Я нашел эту информацию в комментариях функции unlink()
В системе Windows и Apache отказ в доступе к файлу является обычной ошибкой для отсоединения файла. Чтобы удалить файл, вы должны изменить владельца файла. Пример:
chown($tempDirectory . '/' . $fileName, 666); //Insert an Invalid UserId to set to Nobody Owern; 666 is my standard for "Nobody"
unlink($tempDirectory . '/' . $fileName);
Так что попробуйте что-нибудь вроде этого:
$path = './doc/stuffs/sample.docx';
chown($path, 666);
if (unlink($path)) {
echo 'success';
} else {
echo 'fail';
}
РЕДАКТИРОВАТЬ 1
Попробуйте использовать это в пути:
$path = '.'
. DIRECTORY_SEPARATOR . 'doc'
. DIRECTORY_SEPARATOR . 'stuffs'
. DIRECTORY_SEPARATOR . 'sample.docx';
Попробуйте это:
$Path = './doc/stuffs/sample.docx';
if (file_exists($Path)){
if (unlink($Path)) {
echo "success";
} else {
echo "fail";
}
} else {
echo "file does not exist";
}
Если вы получаете файл, которого не существует, у вас неверный путь. Если нет, то это может быть проблема с разрешениями.
Это должно сработать, как только вы закончите с проблемой разрешений. Также попробуйте
ini_set('display_errors', 'On');
Это подскажет вам, что не так
Вам нужен полный путь к интересующему файлу. Например: C:\doc\stuff\sample.docx . Попробуйте использовать __DIR__
или __FILE__
, чтобы получить относительную позицию файла, чтобы вы могли перейти к интересующему файлу.
define("BASE_URL", DIRECTORY_SEPARATOR . "book" . DIRECTORY_SEPARATOR);
define("ROOT_PATH", $_SERVER['DOCUMENT_ROOT'] . BASE_URL);
$path = "doc/stuffs/sample.docx";
if (unlink(ROOT_PATH . $Path)) {
echo "success";
} else {
echo "fail";
}
// http://localhost/book/doc/stuffs/sample.docx
// C:/xampp/htdocs\book\doc/stuffs/sample.docx