git — PHP пустая папка не удаляется командой rmdir

Мой код, как показано ниже:

<?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"); все равно выдает ошибку?

Приветствия.

0

Решение

Вы можете использовать эту простую функцию для рекурсивного удаления папки:

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);
}
}
5

Другие решения

простейшая функция с использованием шарик

function removeDirectory($directory)
{
$files=glob($directory.'/*');
foreach ($files as $file)
{
if(is_dir($file))
{
removeDirectory($file);
continue;
}
unlink($file);
}
rmdir($directory);
}

эта функция удалит все файлы и папки внутри данного каталога и в конечном каталоге сама.

1

По вопросам рекламы [email protected]