отказано в разрешении - PHP unlink
У меня есть два файла: b.php и тест.txt
<?php
$b = "test.txt";
unlink($b);
?>
и ошибка: предупреждение: unlink (test.тхт) [функция.unlink]: разрешение отказано
почему? b.php и тест.txt-777 и та же группа/login
если я установил 777 в Родительском каталоге, я могу выполнить unlink, но я должен установить 777 и вернуться к 755?
5 ответов
You (как в процессе, который выполняется b.php
, либо вы через CLI
или веб-сервер) требуется доступ на запись в каталог, в котором находятся файлы. Вы обновляете содержимое каталога, поэтому доступа к файлу недостаточно.
обратите внимание, что если вы используете PHP chmod()
функция для установки режима файла или папки в 777
вы должны использовать 0777
чтобы убедиться, что число правильно интерпретируется как восьмеричное число.
сначала вам потребуется закрыть файл с помощью fclose($handle);
Он не удаляется, потому что файл используется. Поэтому сначала закройте файл,а затем попробуйте.
в дополнение ко всем ответам, которые есть у других друзей, если кто-то, кто ищет этот пост, ищет способ удалить папка"" не "файл" , следует позаботиться о том, что папки должны удалить php rmdir () функция и если вы хотите удалить "папку" по unlink()
, u столкнется с неправильным предупреждающим сообщением, в котором говорится "отказано в разрешении"
однако u может создавать папки и файлы с помощью mkdir()
но способ удаления папок (rmdir()
) является отличается от способа удаления файлов (unlink()
)
// Path relative to where the php file is or absolute server path
chdir($FilePath); // Comment this out if you are on the same folder
chown($FileName,465); //Insert an Invalid UserId to set to Nobody Owner; for instance 465
$do = unlink($FileName);
if($do=="1"){
echo "The file was deleted successfully.";
} else { echo "There was an error trying to delete the file."; }
попробуйте это. Надеюсь, это поможет.
разрешение файла в порядке (0777), но я думаю, что ваш на общем сервере, поэтому для удаления вашего файла правильно используйте; 1. создайте правильный путь к файлу
// delete from folder
$filename = 'test.txt';
$ifile = '/newy/made/link/uploads/'. $filename; // this is the actual path to the file you want to delete.
unlink($_SERVER['DOCUMENT_ROOT'] .$ifile); // use server document root
// your file will be removed from the folder
этот небольшой код сделает магию и удалит любой выбранный файл из любой папки, если фактический путь к файлу собран.