[Risolto] Upload fallito

Un augurio per l’anno nuovo.

Abbiamo un problema, l’installazione della nuova versione di fedora (ma più che altro di LAMP) ci ha bloccato una serie di utility che prima funzionavano benissimo.

La più scocciante riguarda un upload di file su una cartella del webserver.

Tramite una stupidissima procedura l’ufficio preposto mandava in linea file che poi gli utenti si scaricavano da casa.

La nuova versione del trittico di LAMP (presumo per questioni di sicurezza) non permette di mandare file di dimensioni superiori a un TOT (che non abbiamo ancora individuato ma che è largamente insufficente per noi).

Ho ravanato in svariati log, ini e conf ma non sono venuto a capo di nulla.

Ovviamente ho installato un diverso script con risultati analoghi.

Qualcuno ha qualche consiglio ?
Grazie anticipato.

Allora, vediamo di essere più chiari.

  1. LAMP: tutti pacchetti presi ed installati in Fedora?
  2. l’upload come avveniva? Tramite un form e uno script php? Altro?

Se il problema pensi sia dovuto al limite di dimensione in upload, nel file php.ini dovrebbe esserci la voce

upload_max_filesize =  dim

dove ovviamente dim sta ad indicare la dimensione dei file, è una stringa e quindi è valido scrivere

upload_max_filesize = 10M
upload_max_filesize = 10K

Il parametro può anche essere impostato via .htaccess

php_value upload_max_filesize dim

o con la funzione ini_set direttamente nelle pagine php che ti interessano (dim è un intero che indica la dimensione in byte):

ini_set('max_upload_filesize', dim); 

[quote=MarioS]
Allora, vediamo di essere più chiari.

  1. LAMP: tutti pacchetti presi ed installati in Fedora?
  2. l’upload come avveniva? Tramite un form e uno script php? Altro?[/quote]

Si, tutti i pacchetti presi e poi aggiornati con yum.
Si, un form per far scegliere i file ed uno script

For($i=0; $i <= $file_uploads-1; $i++) {

If($_FILES’file’]‘name’]$i]) {
If(@move_uploaded_file($_FILES’file’]‘tmp_name’] $i],$folder.$file_name$i])) {
$uploaded=true;

} Else {
$display_message.=“Impossibile “.$file_name$i].” sul server, controllate “.$folder.” che i permessi siano chmod 777 e la path sia corretta.\n”;
}
}
} //For

Fatto nel php.ini ma non funziona idem per la riga di codice che mi hai suggerito:
ini_set(‘max_upload_filesize’, 30000000);

Vado con una serie di errori/dimenticanze tipiche (in cui mi includo pure io perché convinto di aver sistemato tutto qualcosa lo dimentico sempre):

Come hai generato la variabile $file_uploads ? Quel ciclo for che hai indicato viene eseguito? Se no, hai verificato che la varibile indicata sia maggiore o uguale a 1?

Se, invece, il problema sta nel primo if, hai provato a verificare con http://www.php.net/manual/en/function.is-uploaded-file.php se ti riconosce qualche file come caricato via upload

Lato HMTL è impostato correttamente il tag ?

Le cartelle hanno i permessi giusti?

Hai guardato nella cartella dove vengono caricati i file se effettivamente esistono, se sì con quali permessi.

Provato a controllare la variabile $_FILES[qualcosa]“error”]

Ti rispondo al volo:
i file di dimensioni più piccole li trasferisce senza problemi.

Siccome però stiamo parlando do immagini tiff di anche 20 mega abbiamo dei problemi perché con queste dimensioni non funzione.

Non abbiamo ancora definito il limite massimo di invio ma dovrebbe aggirarsi sui 500k, se necessario sarò più preciso.

Ah ok, allora prova a verificare il contenuto di $_FILES[file]“error”] se non è stato caricato per problemi di dimensione dovrebbe segnalartelo, così almeno siam sicuro che è li il problema.

http://www.tecnopillole.com/programmazione/php/la-variabile-globale-_files.html
(non ricordo il link ufficiale su php.net, ma il succo è quello)

Allora: seguendo il tuo suggerimento ho inserito l’echo dell’errore, risultato = valore 4 (nessun file è stato inviato ma senza citare le dimensioni)

Ho quindi modificato i valori

max_execution_time = 300 ; Maximum execution time of each script, in seconds

max_input_time = 600 ; Maximum amount of time each script may spend parsing request data

Presenti nel php.ini, adesso funziona con il file di prova da 27Mb.

Ringrazio tutti per le prove effettuate ed i suggerimenti passatici, a buon rendere :thanks:

E se passate a trovarci :pint:

Quindi il problema era legato si alle dimensioni ma per il fatto che ci mettava più tempo a caricare di quanto gli era concesso aspettare?

[quote=fenomeno]
Quindi il problema era legato si alle dimensioni ma per il fatto che ci mettava più tempo a caricare di quanto gli era concesso aspettare?[/quote]

A quanto pare si ! Il tuo suggerimento di far vedere l’errore è stato illuminante per spostare l’attenzione su altre problematiche.

Non mi convince molto questa soluzione…E’ potenzialmente pericoloso aumentare il tempo di esecuzione degli script.

Inoltre la variabile: post_max_size è stata modificata di conseguenza?

Consiglio di rivedere attentamente le variabili di php:
http://php.net/manual/en/ini.core.php

Altri accorgimenti: in fase di sviluppo bisognerebbe avere sempre la possibilità di vedere gli errori del php. E’ in fase di produzione che si possono sopprimere.
L’uso del ‘@’ prima delle funzioni io lo sconsiglierei. Sopprime gli errori quando potrebbe essere utile vederli.