Так вот, я сделал: //имя файла сам получишь, у меня это будет 'test21' $fileName = 'test21';//имя файла должно быть без расширения function incrementFileName() { if (file_exists($fileName)){ $pattern = '/[0-9$]+/'; // шаблон для регулярок, ищет цифры в конце строки $result = preg_match ($pattern, $fileName, $arrayName);//регулярка:ищем цифры в конце, если нашли пишем в массив if ($result = 1){//если цифры есть, то $incName = $arrayName[0] + 1;//прибавляем к уже полученному значению +1 $fileName = preg_replace($pattern, $incName, $fileName);// делаем замену incrementFileName(); //рекурсия }else{//в случае если мы вообще не нашли цифры, то: $fileName = $fileName.'1';//прибавим к названию 1 } } //блок кода, если мы добрались сюда, имя уже уник. } ?> Посмотри настройки php.ini посмотри в параментры memory_limit и upload_max_filesize, так же если можешь приведи всю строку,там может указали на какой строке все ломается например: Allowed memory size of 134217728 bytes exhausted (tried to allocate 41 bytes) in Z:\..\.. on line 18. Попробуй загрузить файл размером меньше и проверь что будет, возможно что мы держим в памяти большой файл. Без моего скрипта файлы загружались без ошибок?