Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di redmak
    Registrato dal
    May 2005
    Messaggi
    83

    Upload di Immagini su server remoto - Errore

    Premetto che non sono molto esperto in php!

    Devo effettuare un upload di immagini su server.

    Ho creato il seguente codice:

    questo è il form d'inserimento

    codice:
    <form action="upload.php" method="post" enctype="multipart/form-data">
    <table  border="0" cellspacing="2" cellpadding="0">
      <tr>
        <th scope="row"><div align="right">Seleziona Immagine</div></th>
        <td><input name="image" type="file" /></td>
      </tr>
      <tr>
        <td></td>
        <td><input name="upload" type="submit" class="bottone" value="Carica immagine" /></td>
      </tr>
    </table>
    </form>
    questa è la pagina upload.php
    codice:
    <?php
    include('../connessione.php');
    $msg = "<h2>Immagine caricata nel server</h2>";
    do {
      if (is_uploaded_file($_FILES['image']['tmp_name'])) {
        // Controllo che il file non superi i 18 KB
        if ($_FILES['image']['size'] > 25000) {
          $msg = "
    
    Il file non deve superare i 24 kb</p>";
          break;
        }
        // Ottengo le informazioni sull'immagine
        list($width, $height, $type, $attr) = getimagesize($_FILES['image']['tmp_name']);
        // Controllo che le dimensioni (in pixel) non superino 160x180
        if (($width > 280) || ($height > 500)) {
          $msg = "
    
    Dimensioni non corrette</p>";
          break;
        }
    	echo $type;
        // Controllo che il file sia in uno dei formati GIF, JPG o PNG
        if (($type!=1) && ($type!=2) && ($type!=3)) {
          $msg = "
    
    Formato non corretto</p>";
          break;
        }
        // Verifico che sul sul server non esista già un file con lo stesso nome
        // In alternativa potrei dare io un nome che sia funzione della data e dell'ora
        if (file_exists('upload_img/'.$_FILES['image']['name'])) {
          $msg = "
    
    File già esistente sul server. Rinominarlo e riprovare.</p>";
          break;
        }
        // Sposto il file nella cartella da me desiderata
        if(!move_uploaded_file($_FILES['image']['tmp_name'],'upload_img/'.$_FILES['image']['name'])){
          $msg = "
    
    Errore nel caricamento dell'immagine</p>";
          break;
        }
      }
    } while (false);
    
    $sql="INSERT INTO immagini (nome) VALUES ('".$_FILES['image']['name']."')";
    mysql_db_query($nomedb,$sql);
    ?>
    Le operazioni in locale funzionano alla perfezione.
    Ma in remoto NO! Ecco l'output steam:

    Warning: getimagesize(): open_basedir restriction in effect. File(/var/tmp/phpv8R1xP) is not within the allowed path(s):

    Warning: getimagesize(/var/tmp/phpv8R1xP): failed to open stream: Operation not permitted in

    a questa linea di codice
    codice:
    list($width, $height, $type, $attr) = getimagesize($_FILES['image']['tmp_name']);
    La mia ipotesi (sicuramente errata) è che l'interprete php sul server non abbia la funzione getimagesize. Eliminando dal codice il suo utilizzo funziona!

    Potete darmi qualche dritta?

    PS: la certella upload_img ha tutti i permessi rwxrwxrwx

  2. #2
    Utente di HTML.it L'avatar di geko
    Registrato dal
    Dec 2004
    Messaggi
    104
    La mia ipotesi (sicuramente errata) è che l'interprete php sul server non abbia la funzione getimagesize. Eliminando dal codice il suo utilizzo funziona!
    Infatti la tua ipotesi è errata
    Il messaggio di errore è abbastanza esplicativo. Il problema sta nel fatto che utilizzando la funzione getImageSize() cerchi di aprire il file presente in /var/tmp/, ma tale percorso non è presente nella direttiva open_basedir (che definisce le directory cui è consentita l'apertura dei file), quindi ricevi un permesso negato.

    A meno di non modificare direttamente la direttiva nel file di configurazione, prova a spostare il file con move_uploaded_file() e fai il resto delle operazioni sul file spostato.

    http://it.php.net/features.safe-mode


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.