Può capitare che in ambiente windows la variabile $_SERVER['DOCUMENT_ROOT'] non sia definita, prova modificare il codice in questo modo:

Codice PHP:
if(!isset($_SERVER['DOCUMENT_ROOT'])){ if(isset($_SERVER['SCRIPT_FILENAME'])){
$_SERVER['DOCUMENT_ROOT'] = str_replace'\\''/'substr($_SERVER['SCRIPT_FILENAME'], 00-strlen($_SERVER['PHP_SELF'])));
}; };
if(!isset(
$_SERVER['DOCUMENT_ROOT'])){ if(isset($_SERVER['PATH_TRANSLATED'])){
$_SERVER['DOCUMENT_ROOT'] = str_replace'\\''/'substr(str_replace('\\\\''\\'$_SERVER['PATH_TRANSLATED']), 00-strlen($_SERVER['PHP_SELF'])));
}; };

$dir=$_SERVER['DOCUMENT_ROOT'].'/upload';
$filename=$id.'immagine'.$_FILES['miofile']['name'];
if(
trim($_FILES["miofile"]["name"])=='')     {die("non hai indicato il file");}     $tipi_consentiti=array('image/gif','image/x-png','image/pjpeg','image/jpeg');     if(!in_array($_FILES['miofile']['type'],$tipi_consentiti))
{die(
'tipo file non consentito');}
if(
is_uploaded_file($_FILES["miofile"]["tmp_name"]))     {     move_uploaded_file($_FILES["miofile"]["tmp_name"],$dir.'/'.$filename) or die('errore'); $sql='UPDATE attivita SET att_immagine="'.$filename.'" WHERE att_id='.$id;
mysql_query($sql); 
Comunque l'action del form, messa in quel modo non mi piace molto... sei sicuro che il submit venga fatto correttamente?