Мой код, как показано ниже:
<?php
header("Location: ../");
unlink("index.php");
unlink("style.css");
unlink("success.php");
unlink("fail.php");
unlink("remove.php");
unlink("README.md");
unlink(".gitignore");
unlink(".git");
rmdir("../Humble-Installer");
die();
Но каждый раз, когда я запускаю его, я получаю следующую ошибку:
[17-Nov-2014 19:47:37 Pacific/Auckland] PHP Warning: unlink(.git): Operation not permitted in /Users/user/Humble/admin/Humble-Installer/remove.php on line 10
[17-Nov-2014 19:47:37 Pacific/Auckland] PHP Warning: rmdir(../Humble-Installer): Directory not empty in /Users/user/Humble/admin/Humble-Installer/remove.php on line 11
Я понятия не имею, каталог пуст, но не удалит … даже если я удалю unlink(."git");
все равно выдает ошибку?
Приветствия.
Вы можете использовать эту простую функцию для рекурсивного удаления папки:
function rrmdir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object);
}
}
reset($objects);
rmdir($dir);
}
}
Заметки:
unlink
для файла, .git
каталог, поэтому он не будет удален, используйте rmdir
, Если вы хотите сделать это рекурсивно, используйте функцию, которую я написал выше.
Если вы хотите использовать RecursiveIteratorIterator
, Вы можете использовать эту функцию:
/**
* Remove directory recursively.
*
* @param string $dirPath Directory you want to remove.
*/
function recursive_rmdir($dirPath)
{
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dirPath, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST) as $path) {
$pathName = $path->getPathname();
echo $pathName."\n";
($path->isDir() and ($path->isLink() === false)) ? rmdir($pathName) : unlink($pathName);
}
}
простейшая функция с использованием шарик
function removeDirectory($directory)
{
$files=glob($directory.'/*');
foreach ($files as $file)
{
if(is_dir($file))
{
removeDirectory($file);
continue;
}
unlink($file);
}
rmdir($directory);
}
эта функция удалит все файлы и папки внутри данного каталога и в конечном каталоге сама.