Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 27-03-10, 16:14   #1 (permalink)
User Newbie
 
Data di registrazione: Mar 2010
Messaggi: 3
Upload funziona in locale ma non in remoto

Ciao a tutti questo è il mio primo post su questo forum.

Parto subito chiarendo il mio problema sperando che qualcuno abbia un'intuizione.

Ho uno script PHP che mi permette di fare l'upload di file all'interno di un database MySQL.

Sia in locale che in remoto php.ini è settato così:
file_uploads On
upload_max_filesize 8M
max_execution_time 30
post_max_size 8M

La versione di PHP è 5 (anche se in locale è un po' più agggiornata).
In locale uso Debian in remoto credo che sul server giri Fedora (o Red Hat).

In locale funziona tutto perfettamente, mentre in remoto ci sono problemi per alcuni file. Infatti in remoto riesco ad uploadare con certezza file fino a circa 700Kb, mentre non riesco ad uploadare file > 1.1Mb (il limite immagino stia nel mezzo).

Ho pensato che il problema fosse che in remoto ci si mettesse più di 30 secondi per eseguire l'upload ma invece ho notato che l'upload fallisce molto prima (intorno ai 18 secondi).

Ho controllato $_FILES['nomedelfile']['error'] ma l'uscita è 0 vale a dire nessun errore.

PHP nopn da nessun errore, semplicemente fallisce la query:
$queryallegatif1 = "INSERT INTO $tab_allegati (collega, user, numero, nome, type, size, contenuto) VALUES ('$collegato', '$utente', '1', '$nomef1', '$file1_t', '$file1_s', '$contentf1')";

Forse dovrei postare parti del mio codice php anche se credo che sia più un problema di settaggio del server.

Qualcuno ha qualche idea?

Grazie
ciao
kmarx non in linea   Rispondi citando
Vecchio 27-03-10, 16:51   #2 (permalink)
 
Data di registrazione: Feb 2008
Messaggi: 131
Dubito che sia un problema di settaggio di server.

Posta lo script in modo da vedere cosa e dove sbagli..Che errore ti da la query?
__________________
Realizza il tuo sito web: www.handcoded.it
Amistat non in linea   Rispondi citando
Vecchio 27-03-10, 17:26   #3 (permalink)
User Newbie
 
Data di registrazione: Mar 2010
Messaggi: 3
Grazie per la risposta.

Il file intero è piuttosto lungo, allego solo le parti relative al upload:

In questa parte prendo i dati che arrivano da un form html con enctype="multipart/form-data" controllo il MIME e la grandezza:

Codice PHP:
// FILES

$max_file_size 2097152// byte = 2Mb
$chevale $max_file_size 1048576;
$chevale number_format($chevale2);

$caricabilif = array("application/msword","application/doc","application/rtf","application/pdf""application/ps""application/eps""application/postscript""application/vnd.ms-excel""application/vnd.ms-powerpoint""application/zip""application/x-rar-compressed""application/x-rar""application/rar");
    
$filesi 0;
//faccio lo stesso con il file 1


if ($_FILES['msfile1']['size'] > 0) {
        
    
$file1_n=$_FILES['msfile1']['name']; 
    
$file1_t=$_FILES['msfile1']['type']; 
    
$file1_s=$_FILES['msfile1']['size']; 
    
$file1_tmp=$_FILES['msfile1']['tmp_name']; 
    
$file1_e=$_FILES['msfile1']['error']; 
    
//echo"<br />nome: ".$file1_n." errore: ".$file1_e." size= ".$file1_s."<br />";
    
    
    
if ($nomef1 == '') {
    
$nomef1 $file1_n;
    }
    
    
// Controllo che il file sia in uno dei formati caricabili 
    
if (!in_array($file1_t,$caricabilif)){ 
            echo
"<u>WARNING</u> file 1  should be one of the following type: .doc, .rtf, .xls, .pdf, .ps, .eps, .ai, .pps, .ppt, .zip, .rar.<br />  &raquo; <a href=\"javascript:history.back()\"> Go back</a><br /><br /><br />";
            echo 
"</div>
          </div>
          </div>"

            include(
"sotto.html"); 
            exit();
    }
    
//echo"<br />passa il controllo mime<br />";
    
    // controllo che il file non sia più grande di max file size 
    
if ($file1_s $max_file_size){ 
           echo 
"<u>WARNING</u> file 1 cannot be larger than ".$chevale." Mb.<br /> &raquo; <a href=\"javascript:history.back()\"> Go back</a><br /><br /><br />";
           echo 
"</div>
          </div>
          </div>"

           include(
"sotto.html"); 
           exit(); 
    }
    
//echo"<br />passa il controllo megabyte<br />";
    
    
$grande $file1_s 1048576;
    
//echo "<br /><br /><br />file 1 is set e grande: ".$grande."<br /><br /><br />";
    
    
$checkf1 0;    
    
$numero 1;
    
$f1 1;
    
$filesi 1;
    
    
    
$fpfopen($file1_tmp'r');
    
$contentf1fread($fpfilesize($file1_tmp));
    
$contentf1addslashes($contentf1);
    
fclose($fp);
    


e qui inserisce i dati nel DB:

Codice PHP:
    if ($f1 == 1) {
        
//echo"<br />ora dovrà inserire i dati di file 1 in tabella<br />";
        
        
$queryallegatif1 "INSERT INTO $tab_allegati (collega, user, numero, nome, type, size, contenuto) VALUES ('$collegato', '$utente', '1', '$nomef1', '$file1_t', '$file1_s', '$contentf1')";
        
        
        if (
mysql_query($queryallegatif1$db) ) { 
            
$checkf1 1;
            echo 
"File 1  <b>".$nomef1."</b> has been successfully uploaded.<br /><br /> "
        }
        else {
            
$checkf1 0
            echo 
"<u>WARNING</u>, file 1  <b>".$nomef1."</b> has not been uploaded.<br /><br /> ";
             
        }
        
    } 
Non mi da nessun tipo di errore, semplicemente la query per file superiori a circa 1Mb in remoto non va a buon fine.

Potrebbe essere un problema con il max_allowed_packet di mysql?

Se hai bisogno di altro fammi sapere.

Grazie ciao
kmarx non in linea   Rispondi citando
Vecchio 30-03-10, 14:52   #4 (permalink)
User
 
L'avatar di fiscet
 
Data di registrazione: Jan 2010
Ubicazione: TV
Messaggi: 55
Invia un messaggio tramite Skype a fiscet
Ciao,
hai provato a spostare il file caricato in un percorso creato da te, magari con move_uploaded_file()?
forse $contentf1= fread($fp, filesize($file1_tmp)); non va a causa permessi :-/

Hai provato a stampare mysql_error()?
__________________
Internet Conegliano Treviso Oderzo
fiscet non in linea   Rispondi citando
Vecchio 30-03-10, 15:32   #5 (permalink)
User Newbie
 
Data di registrazione: Mar 2010
Messaggi: 3
Grazie per la risposta.

Il problema sta nel "max_allowed_packed" di MySql che è di default fissato a 1Mb.

Inserendo
Codice PHP:
echo "Error number: ".mysql_errno($db)."<br />"
infatti mi esce l'errore 1153:

ERROR 1153: Got a packet bigger than 'max_allowed_packet' bytes.

Credo che dovrò intervenire via ssh su mysql ma prima devo chiedere l'autorizzazione al gestore del server... va beh, comunque il problema può considerarsi risolto.

Grazie.

Ciao
kmarx non in linea   Rispondi citando
Vecchio 30-03-10, 15:34   #6 (permalink)
User
 
L'avatar di fiscet
 
Data di registrazione: Jan 2010
Ubicazione: TV
Messaggi: 55
Invia un messaggio tramite Skype a fiscet
eh purtroppo i gestori sono sempre poco generosi con le risorse
__________________
Internet Conegliano Treviso Oderzo
fiscet non in linea   Rispondi citando
Rispondi
Tags:



Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 15:27.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.