Riprendo il post che ho già scritto perchè si è perso tra i tanti, e non sono riuscita a trovare una soluzione

Ho implementato sulla base di tutorial che ho trovato in Internet il caricamento di file da un form.
La procedura funziona perfettamente in locale, ma quando la provo su server mi da i seguenti errori:

Warning: move_uploaded_file(../upload/17.jpeg) [function.move-uploaded-file]: failed to open stream: Permission denied in /opt/lampp/htdocs/www.ilprincipe.eu/moduli/esito_articoli.php on line 108

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpGQ97fV' to '../upload/17.jpeg' in /opt/lampp/htdocs/www.ilprincipe.eu/moduli/esito_articoli.php on line 108

Il codice è il seguente:
Codice PHP:
//PROCEDURA PER IL CARICAMENTO DEL FILE
        // assegnazione del file trasmesso - struttura con if per compatibilità versioni diverse
        
if(!isset($_FILES))
        {
          
$_FILES $HTTP_POST_FILES;
        }
        if(!isset(
$_SERVER))
        {
          
$_SERVER $HTTP_SERVER_VARS;
        }
        
// controllo dimensioni file
          
if ($_FILES["upfile"]["size"][0] > 100000000)
          {
                
$err_foto1=true;
          }
          else
          {
            
// controllo dimensioni file
            
if ($_FILES["upfile"]["size"][0] != 0)
            {
              
//Nuovo nome da dare al file uploadato, può anche non essere assegnato
             
$all_est=array('.jpeg','.jpg','.bmp','.tif','.tiff');
              
$estensione strtolower(substr($_FILES["upfile"]["name"][0], strrpos($_FILES["upfile"]["name"][0], "."), strlen($_FILES["upfile"]["name"][0])-strrpos($_FILES["upfile"]["name"][0], ".")));
             if (!
in_array($estensione,$all_est))
             {                
                
$err_foto2=true;
             }
             else
             {
              
$sql="SELECT * FROM codici_foto ORDER BY cod DESC LIMIT 1";
              
$a=$db->query($sql)or die("Errore ".$db->error);
              
$riga $a->fetch_assoc();
              
$cod=$riga["cod"];
              
$cod2=$cod+1;
              
$nome_file1 $cod2."$estensione";
              
$sql "INSERT INTO codici_foto
              (cod,nome_foto)
              VALUES
              (
$cod2,'$nome_file1')";
              
$db->query($sql)or die("Errore1 ".$db->error);
              
//Percorso assoluto della cartella dove si desiderano salvare i files uploadati
              
$upload_dir "../upload";
              echo 
"directory: $upload_dir";
              
//Controllo il file che è stato uploadato e lo sposto nella cartella definita nella variabile $upload_dir
              
if(@is_uploaded_file($_FILES["upfile"]["tmp_name"][0]))
              {
                @
move_uploaded_file($_FILES["upfile"]["tmp_name"][0], "$upload_dir/$nome_file1")
                or die(
"Non riesco a spostare il file $nome_file1");
              }
             }
            }
          } 
Significa che non ho i permessi? Non so proprio dove sbattere la testa
Grazie
Michela