Разрешено отклонение - php unlink
У меня есть два файла:
b.php и test.txt
<?php
$b = "test.txt";
unlink($b);
?>
и ошибка: Предупреждение: unlink (test.txt) [function.unlink]: Permission denied
почему? b.php и test.txt - 777 и одна и та же группа/логин
если я устанавливаю 777 в родительский каталог, я могу выполнить unlink, но мне нужно установить 777 и вернуться к 755?
Ответы
Ответ 1
Вы (как в процессе, выполняющем b.php
, либо через CLI
, либо в веб-сервере), необходимо написать доступ к каталогу, в котором находятся файлы. Вы обновляете содержимое каталога, поэтому доступа к файлу недостаточно.
Обратите внимание: если вы используете функцию PHP chmod()
для установки режима файла или папки на 777
, вы должны использовать 0777
, чтобы убедиться, что номер правильно интерпретируется как восьмеричное число.
Ответ 2
Сначала вам нужно закрыть файл, используя fclose($handle);
, который не удаляется, поскольку файл используется. Поэтому сначала закройте файл, а затем попробуйте.
Ответ 3
// 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."; }
Попробуйте это. Надеюсь, что это поможет.
Ответ 4
Разрешение файла в порядке (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
Этот небольшой код сделает магию и удалит любой выбранный файл из любой папки, если будет создан фактический путь к файлу.