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