Как переименовать файл, если такой файл есть при загрузке?
Это совершенно небезопасный и непонятно зачем нужный велосипед. Генерируйте наименования загружаемых файлов сами, строго следите за расширением. $valid_formats = [
    'jpg',
    'jpeg',
    'png',
    'gif',
    'bmp'
];

$ext = pathinfo($_FILES['filename']['name'], PATHINFO_EXTENSION);
if (!isset($valid_formats[$ext])) {
   return 'error';
}

$filename = md5($_FILES['filename']['name'].uniqid()). '.' .$ext;

if (!is_file('upload/'.$filename)) {
   move_uploaded_file($_FILES['filename']['tmp_name'], 'upload/'.$filename);
}
1) Получить название файла
2) Записать в переменную, отбросив расширение ".jpg", только делайте внимательно, чтобы отбрасывало именно разрешение, а не так, чтобы у вас файл kartinka.leto.bmp и вы отбросили .leto.bmp
3) Если приписанного числа нет, то добавить в конце 1, если изначально file1.bmp, то отрезать единицу (или любое другое число), прибавить к ней +1 и подписать обратно
4) Приклеить обратно расширение
5) ...
6) PROFIT!
P>S> В 3 пункте, добавляйте через _1, чтобы проще было улавливать разницу между названием файла и его копией, чтобы получалось file.bmp file1.bmp, file_1.bmp file1_1.bmp чтобы видеть разницу между ними