La prima cosa che mi viene da dirti, così guardando al volo questo script, è che non potrà mai funzionarti.
function inserisciFile($file_,$id_prog,$id_cat,$descr) {
if(empty($file_)) return false;
if(empty($file_["name"]) ) return false;
if(empty($file_["size"]) || $file_["tmp_name"]=="none") return false;
if(!isset($_SERVER)) {
$_SERVER = $HTTP_SERVER_VARS;
}
$file_ non esiste!
Devi scrivere $_FILES['xxx']: tutto maiuscolo e con l'underscore tra il segno del dollaro e la scritta FILES.

Il controllo per capire se il file sia stato caricato o meno, poi, è più accurato farlo su $_FILES['xxx']['error'], piuttosto che sul valore vuoto del peso in KB del file stesso.

Altra osservazione.
chmod($new_name, 0755)
Se ragioni un attimo capisci da solo dove sta l'errore.
Qualche riga prima dici a PHP di spostare il file in una cartella.
Se poi gli imponi di cambiare i permessi sul file che non è più dove te pensi che sia, allora PHP restituirà sempre un errore.
Prova con:
Codice PHP:
chmod($upload_dir.$new_name0755); 
Ti consiglio poi di leggere attentamente la Guida alla Sicurezza in PHP, perché se pensi di rendere sicuro uno script con un semplice ADDSLASHES ti sbagli alla grande!

Mi stupisco comunque che qualche volta questo script ti abbia funzionato!