$percorso = "public/impianti/img/";

// verifico che il file venga inviato al server
if (is_uploaded_file($_FILES['file1']['tmp_name'])) {

// rilevo il filename dell' immagine
$filename = $_FILES['file1']['name'];
// mi assicuro che il file contenga un solo '.', gli altri verranno stostituiti con '_'
$filename = preg_replace('/\\.(?![^.]*$)/','_',$filename);
// faccio una copia del nome
$newfilename = $filename;
// tolgo l' estensione del file
$estensione = substr($filename,(strrpos($filename,'.')+1));
$estensione = strtolower($estensione);
// verifico che sia un file supportato tramite il confronto con le estensioni
if (!in_array($estensione,$accept)){
$error = "Tipo di file non supportato";
break;
}

$filename = $newfilename;
move_uploaded_file($_FILES['file1']['tmp_name'], $percorso.$filename);


questo codice è quello che utilizzo io su aruba, non creo nessuna cartella, non utilizzo chmod, faccio un semplice upload di immagine e tutto fila liscio come l' olio.
Quindi ancora non ho capito qual'è la differenza che provoca il problema, sarò duro. Per curiosità mia.