Ciao, espongo subito il mio problema.
Devo caricare file di grandi dimensioni (anche 100M) tramite un semplice form su un server aruba con hosting linux.
Con il form si seleziona il file da caricare, si invia il form ad una pagina php con un passaggio di variabili POST, la pagina php copia il file sul server e scrive un xml che tiene traccia di tutti i file caricati.
Ho caricato file fino a 21M senza alcun problema, tutto funziona, il problema l'ho riscontrato quando ho voluto caricare 36M.
Il fatto è che la pagina php non restituisce nessun errore, viene eseguita come se tutto fosse andato a buon fine, ma guardando nel server il file caricato non c'è e il file xml non è stato scritto.
Ho provato a cambiare i valori dei vari paremetri memory_limit, upload_max_filesize, max_... tramite .htaccess, ma non è cambiato niente.
Posto anche il codice:
il form
Codice PHP:
<form action="upload_traccia.php" method="post" enctype="multipart/form-data">
<input name="traccia" type="file" id="traccia" />
<input name="art" type="hidden" id="art" value="<?php echo $id;?>" />
<input type="submit" name="invia" id="invia" value="Invia" />
</form>
la pagina php
Codice PHP:
<?php
//intercetto le variabili
$art = $_POST['art'];
//COPIO TRACCIA
//copio icona1
if ($_FILES["traccia"]["error"] > 0){
//echo "Codice Errore: " . $_FILES["ico"]["error"]."
";
}else{
//controllo se il file esiste già sul server
$zonta1 = "";
while (file_exists( 'tracce/'.$art.'/'.$zonta1.$_FILES["traccia"]["name"])){
//setto la zonta
if($zonta1 == ""){
$zonta1 = 1;
}else{
$zonta1++;
}
}
//sposto il file caricato dalla cartella temporanea alla destinazione finale
move_uploaded_file($_FILES["traccia"]["tmp_name"], 'tracce/'.$art.'/'.$zonta1.$_FILES["traccia"]["name"]);
}
//apro l'rss per leggere l'id
$filename = 'tracce/index.xml';
$fp=fopen($filename ,"r");
$contents = fread($fp, filesize($filename));
$line = explode("<ele ", $contents);
$nl = count($line);
fclose($fp);
//calcolo il prossimo id
$id=0;
for ($i = 1; $i < $nl; $i++) {
//id
$temp = explode('"', $line[$i]);
$id_temporaneo = $temp[1];
//se l'id_temporaneo è maggiore aggiorno
if($id < $id_temporaneo){
//aggiorno
$id = $id_temporaneo;
}
}
$id++;
//ELABORO DATI
//data
$dat = date('D').", ".date('d M Y H:i:s')." GMT";
$file_da_scrivere = '<ele id="'.$id.'" art="'.$art.'" dat="'.$dat.'">'.$zonta1.$_FILES["traccia"]["name"].'</ele>';
//scrivo il file xml
$fp=fopen($filename,"a");
fwrite($fp,trim($file_da_scrivere));
fclose($fp);
?>
Qualcuno mi può aiutare?
Qual è il problema?