En mi opinión, nunca debes usar aleatorios para valores que deben ser únicos, ya que siempre existe la posibilidad que se repita, o bien, debes verificar y generar el aleatorio en caso de repetición, lo cual no es práctico.
Te aconsejaría numerar los archivos, por ejemplo de esta manera:
Código PHP:
Ver original$archivo='hola.jpg';
$nombre=explode(".",$archivo);//partes el archivo por el punto $ext=array_pop($nombre);//obtienes la extensión $nombre=implode(".",$nombre); //opcionalmente puedes unir el nombre en caso de contener punto $nomdef="$nombre.$ext";//En la variable $nomdef guardas el nombre original
if(file_exists("$ruta/$nombre.$ext")){//si ya hay un archivo $x=1;
while(file_exists("$ruta/$nomdef")){//mientras exista un archivo con el mismo nombre $x++;
$nomdef="$nombre$x.$ext";//En la variable $nomdef guardas nuevo nombre numerado
}
}