personalmente piuttosto che complicarmi la vita controllando i nomi dei files durante l'upload, ed eventualmente rinominandoli se gia presenti, ho sempre preferito dare al file un nome generato da me in modo univoco. se poi ho bisogno anche di mantenere il nome originario del file, lo salvo nel database e lo uso quando realmente mi serve. per generare il nome univoco uso questa funzione:

Codice PHP:
/*
    Restituisce un codice alfanumerico univoco di almeno 12 cifre.
    Converte in base 36 un microtime.
*/
function unique_id_alphanum() {
    
$now = (string)microtime();
    
$now explode(' '$now);
    
$unique_id $now[1].str_replace('.'''$now[0]);
    unset(
$now);
    
    return 
strtoupper(base_convert($unique_id1036));