Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    8

    [PHP - MySQL] Upload di un File

    Ciao, ho un problema:

    Su windows XP ho installato un server web Apache ora facendo degli esperimenti in locale non sono riuscito a far accettare uno script PHP che permetta l'upload di un file all'interno di una cartella del server.
    la configurazione del file php.ini mi sembra corretta però quando quando clicco upload il server mi ritorna questo errore:
    1024 byte = 1 Kb $dimensione_massima_Kb=$dimensione_massima/1024; $cartella_upload="c:/root/"; //cartella in cui eseguire l'upload (controllare permessi scrittura) // percorso cartella relativo $cartella_upload="../"; $filtrare=1; //filtrare x estensioni ammesse? 1=si 0=no $array_estensioni_ammesse=array('.jpg','.jpeg','.g if','.png'); //estensioni ammesse if(!isset($_FILES['file1']) || $_FILES['file1']['size']==0){ echo "Nessun file selezionato per l'upload"; }elseif($_FILES['file1']['size']>$dimensione_massima){ echo "Il file selezionato per l'upload supera dimensione massima di $dimensione_massima_Kb Kb"; }else{ $nome_file=$_FILES['file1']['name']; $errore=""; if($filtrare==1){ $estensione = strtolower(substr($nome_file, strrpos($nome_file, "."), strlen($nome_file)-strrpos($nome_file, "."))); if(!in_array($estensione,$array_estensioni_ammesse )){ $errore.="Upload file non ammesso. Estensioni ammesse: ".implode(", ",$array_estensioni_ammesse)."
    "; } } if(!file_exists($cartella_upload)){ $errore.="La cartella di destinazione non esiste
    "; } if($errore==""){ if(move_uploaded_file($_FILES['file1']['tmp_name'], $cartella_upload.$_FILES['file1']['name'])){ chmod($cartella_upload.$_FILES['file1']['name'],0777); //permessi per poterci sovrascrivere/scaricare echo "Operazione eseguita con successo. Upload riuscito."; }else{ echo "Impossibile effettuare l'upload del file"; } }else{ echo $errore; } } ?>
    il mio script php è questo:
    <?
    $dimensione_massima=51200; //dimensione massima consentita per file in byte -> 1024 byte = 1 Kb
    $dimensione_massima_Kb=$dimensione_massima/1024;
    $cartella_upload="c:/root/"; //cartella in cui eseguire l'upload (controllare permessi scrittura)
    // percorso cartella relativo $cartella_upload="../";
    $filtrare=1; //filtrare x estensioni ammesse? 1=si 0=no
    $array_estensioni_ammesse=array('.jpg','.jpeg','.g if','.png'); //estensioni ammesse

    if(!isset($_FILES['file1']) || $_FILES['file1']['size']==0){
    echo "Nessun file selezionato per l'upload";
    }elseif($_FILES['file1']['size']>$dimensione_massima){
    echo "Il file selezionato per l'upload supera dimensione massima di $dimensione_massima_Kb Kb";
    }else{
    $nome_file=$_FILES['file1']['name'];
    $errore="";
    if($filtrare==1){
    $estensione = strtolower(substr($nome_file, strrpos($nome_file, "."), strlen($nome_file)-strrpos($nome_file, ".")));
    if(!in_array($estensione,$array_estensioni_ammesse )){
    $errore.="Upload file non ammesso. Estensioni ammesse: ".implode(", ",$array_estensioni_ammesse)."
    ";
    }
    }
    if(!file_exists($cartella_upload)){
    $errore.="La cartella di destinazione non esiste</br>";
    }

    if($errore==""){
    if(move_uploaded_file($_FILES['file1']['tmp_name'], $cartella_upload.$_FILES['file1']['name'])){
    chmod($cartella_upload.$_FILES['file1']['name'],0777); //permessi per poterci sovrascrivere/scaricare
    echo "Operazione eseguita con successo. Upload riuscito.";
    }else{
    echo "Impossibile effettuare l'upload del file";
    }
    }else{
    echo $errore;
    }
    }
    ?>
    chi mi può aiutare a capire cosa mi manca? ho installato PHP 5.3 e Apache 2

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    204
    Nella prima riga dello script invece di <? devi mettere <?php

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    8
    OK problema risolto grazie tante ale
    è vero bastava solo sostituire al TAG "<?" il TAG "<?PHP" Il mio dubbio è:
    che differenza c'è tra i due TAG "<?" e "<?PHP" pensavo andassero entrambi. Che ci sia qualche modifica che devo fare sul file di configurazione "php.ini" ?

    ciao e grazie ancora

    Edit:
    ora ho un altro problema, quando cerco di uploadare file piccoli allora lo script funziona che è una meravigli, se però provo con file grandi da 50Mb in Su viene inviata la richiesta al server per un po' poi lo script mi ritorna l'erreore "Nessun file selezionato"... Secondo me dal php.ini bisogna modificare qualcosa perché aumenti il tempo per l'elaborazione dello script.
    Cosa dovrei modificare ?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    204
    Nel file php.ini:

    - short_open_tag impostato di default a 'on', ti permette di aprire e chiudere codice PHP con i tag <? e ?>.
    - max_execution_time: impostato di default a 30 secondi, è il tempo limite concesso a PHP per l'esecuzione di uno script, oltrepassato il quale si blocca. Utile se esistono loop su cicli errati.

    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    8
    Buono a sapersi del tag "short_open_tag"

    Per quanto riguarda l'upload invece no! C'è qualcosa che non riesco ad interpretare. Ho provato a cambiare anche il "max_execution_time" l'ho messo per prova a 30000, ma niente.
    Praticamente lo script interroga il server e si sente che che il file si sta spostando tra i due hard disk però prima che si concluda succede qualcosa che non so decifrare ed esce l'errore posto nel primo controllo if: "non è stato selezionato alcun file". Effettivamente è un po' strana la cosa. Che ci sia bisogno di un ulteriore istruzione visto che si tratta di files mediamente grandi ? Tipo: "unlink" ?

  6. #6
    Di solito su server windows esiste il problema dei permessi delle cartelle che di default sono impostati in sola lettura e non credo che queste istruzioni (chmod($cartella_upload.$_FILES['file1']['name'],0777); ) funzionino su windows.
    Prova a controllare questa cosa magari.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    204
    Ma tu hai 1 immagine più grande di 50 mb? Perché quello script ti permette di fare l'upload solo di immagini..

    Ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    8
    perché dici solo immagini e non file generici ?
    nell'array d'esclusione o messo anche .avi e .zip e infatti l'upload di un zip da 4Mb è riuscito invece l'upload di un avi da 50Mb e superiore non è riuscito.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    8
    Potrebbe essere un problema di malfunzionamento di PHP/APACHE nella mia configurazione WindowsXP ?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    204
    Non credo, probabilmente il file php.ini e' settato in modo che l'upload consenta massimo 50M per file : upload_max_size = 50M. Prova a controllare.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.