Вы уверены, что нет ошибки такого файла не произойдет, если вы не попытаетесь переименовать? Хорошим первым шагом при отладке является упрощение проблемы до тех пор, пока она не перестанет глючить.
Я не могу сказать, сделали ли вы это, потому что сначала он не работал или нет, но вам определенно не следует использовать rawurlencode()
для локального имени файла, это гарантированно испортит ситуацию. Кроме того, мне любопытно, что вы делаете с "(Dir) {$fname}"
- это тоже ошибка. Я подозреваю, что более вероятно, что вы хотите сделать, это:
if ( ($fname != '.') && ($fname != '..') && !is_dir("./$fname" ))
{
$old_files[] = $fname;
}
Однако вы также должны понимать, что dir
возвращает имя файла относительно переданного каталога , поэтому вам необходимо убедиться, что ваши операции is_dir()
и переименование учитывают это. Так что, скорее всего, вы хотите сказать:
is_dir($dir.'/'.$fname);
и
rename($dir.'/'.$file,$dir.'/'.$new_files[$x++]);