PDA

View Full Version : [PHP - MySQL] Upload di un File


N-enemy
17-09-2009, 21:24
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','.gif','.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','.gif','.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)."<br/>";
}
}
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

N-enemy
18-09-2009, 10:56
ho risolto il problema...
bastava 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 ?

Torav
18-09-2009, 11:21
ho risolto il problema...
bastava 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" ?


esatto. Se vuoi poter utilizzare <? mi pare che tu debba mettere

short_opentag=On


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 ?

anche in quel caso dovrebbe esserci qualcosa tipo max_uploaded_size o similare che dovresti poter cambiare e mettere la dimensione che preferisci!

N-enemy
18-09-2009, 19:17
purtroppo no! Il problema rimane per file discretamente grandi...
lo script parte, interroga il server e comincia il trasferimento però poi s'interrompe anche dopo alcuni minuti ritornando questo errore: "Non è stato caricato alcun file". E questo è un po' strano.
Ho modificato tutto il possibile del file php.ini però non è bastato :(

edit:

ptrebbe essere un problema di compatibilità tra PHP-Apache e e il sistema winXP che utilizzo ?