Странное поведение php Рекурсивное удаление папки удаляет только файл 527, а не все

Я попробовал два рекурсивных скрипта, чтобы стереть содержимое папки:

Кулак:

function clearDirectory($path) { $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(get_home_path().$path, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST); foreach ($files as $filename => $fileInfo) { if ($fileInfo->isDir()) { rmdir($filename); } else { unlink($filename); } } } 

Второй:

 function rrdir($path) { $src = get_home_path() . $path; $dir = opendir($src); while(false !== ( $file = readdir($dir)) ) { if (( $file != '.' ) && ( $file != '..' )) { $full = $src . '/' . $file; if ( is_dir($full) ) { rrmdir($full); } else { unlink($full); } } } closedir($dir); rmdir($src); } 

В обоих случаях он делает то же самое. Но у меня возникла странная проблема: он не удаляет все файлы, которые он делает только для 527 из 706.

Если я запускаю любой из этих сценариев дважды, он удаляет все файлы … Но это не делается с первого раза.

Не имеет ничего общего с linux или любым другим проверенным разрешением, и все разрешения в порядке.

В журналах ошибок нет, все работает нормально с этими обоими сценариями, проблема в том, что они не удаляют все файлы с первого раза.

Я запускаю окна 10 x64, с виртуальным ящиком Vagrant и Homestead. Протестировано rm -f * работает отлично. Что я делаю не так?

Как отмечает JustOnUnderMillions, есть две проблемы:

  • clearDirectory вызывает rmdir , который требует, чтобы каталог был пустым. Вероятно, вы хотите вызвать rrdir , другую функцию.
  • Функция rrdir вызывает rrmdir , которая не определена. Вы, вероятно, захотите позвонить rrdir здесь.

Хорошо, думаю, я обнаружил, что проблема не вызвана кодом. Проблема, вероятно, вызвана виртуальной коробкой homestead, которую я использую в качестве среды разработки, так как, когда я настраивал xampp на своей машине, он работал как шарм. Спасибо, ребята, за попытку исправить это.