non sono sufficientemente esperto per darti consigli... ma ti posto uno script che utilizzo io e che mi funziona. poi prova ad attendere risposte più autorevoli

Codice PHP:
<?php

/*settiamo la cartella in cui fare l'upload*/

$cartella_upload $_SERVER["DOCUMENT_ROOT"] . "/nomecartella";


/*se il file è vuoto*/

if(trim($_FILES["upfile"]["name"]) == "") {

die(
"Non hai indicato il file da uploadare!");

}

/*nome originale oppure rinomina se è privisto nel form*/
/*sostituiamo gli spazi con _ per evitare problemi con gli url*/

$file_name = ($new_name) ? $new_name $_FILES["upfile"]["name"];
$file_name =str_replace(" ""_"$file_name);


/*se si prova a caricare un file che non è un'immagine*/

$allowed_types = array("image/gif","image/x-png","image/pjpeg","image/jpeg");
if(!
in_array($_FILES["upfile"]["type"],$allowed_types)) {

die(
"Il file non è di un tipo consentito, sono ammessi solo i seguenti: .gif, .jpg, .jpeg, .png");

}

/*upload o errore*/

if(@is_uploaded_file($_FILES["upfile"]["tmp_name"])) {

@
move_uploaded_file($_FILES["upfile"]["tmp_name"], "$cartella_upload/$file_name"
or die(
"Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload.");

} else {

die(
"Problemi nell'upload del file " $_FILES["upfile"]["name"]);

}
?>