Creati una funzione che pulisca il nome del file rendendolo "sicuro", sostituisci tutti i caratteri potenzialmente problematici con caratteri sicuri, ad esempio
Codice PHP:
function sanitize_filename($filename)
{
$cerca = array("à","è","é","ì","ò","ù","'","?"," ");
$sostituisci = array("a","e","e","i","o","u","_","","_");
return str_replace($cerca,$sostituisci,$filename);
}
Ovviamente puoi inserire altri caratteri negli array, ma è importante l'ordine in cui li metti.
Usa la stringa così ottenuta come nome del file da salvare sia sul db che come nome del file vero e proprio.