io non credo di essere all'altezza di darti consigli. Mi limito a dirti le cose che ho imparato dai miei studi.
Quando da un form con un input type=file si invia un file presente su un pc del visitatore questo viene caricato in una cartella temporanea (nn sò dove sia e qual è) del server.
Per effettuare upload in una cartella dello tuo sapzio web io faccio lo spostamento del file dalla cartela temporaea alla cartella da me desiderata.

Nel mio script (che io utilizzo per miei scopi ed è funzionante) ci sono i particolare queste due funzioni:
- $_FILES['image']['tmp_name'] contiene il percorso comprensivo del nome del file caricato nella cartella temporanea;
- is_uploaded_file() verifica se il file in questione sia stato caricato attraverso il PHP;
- move_uploaded_file() "sposta" il file, una specie di trascinamento, da una cartella (nel mio script quella temporanea) ad un'altra (quella dove voglio che il file sia carivcato).

Inoltre la cartella in cui deve avvenire l'upload deve avere i permessi 777 e all'interno io ho caricato un file .hatcess al cui interno c'è scritto così:

# av:PHP-upload
php_value upload_max_filesize 5M
php_value post_max_size 5M
php_value max_input_time 300
# PHP-upload


Aspetta risposte da chi è più preparato di me... perchè va a finire che possa aver detto delle bagianate (ci tengo anche io a saperne qualcosina in più...)!!