Visualizzazione dei risultati da 1 a 7 su 7

Discussione: file upload via ftp

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    170

    file upload via ftp

    salve gente
    sto impazzendo su un problema
    ho la necessità di caricare da un web form dei pdf; tutto bene finchè la dimensione dei file non eccede 2M

    ho eseguito php_info e ho trovato queste impostazioni:
    codice:
    upload_max_filesize 2M 2M
    post_max_size 8M 8M
    ho provato ad aggirare il problema con uno script che carica il file tramite ftp: vi posto il codice

    Codice PHP:
    $ftp_login=@ftp_login($ftp_connect,USERNAME,PASS); 
    if(!
    $ftp_login) { print "<font face=\"arial\" size=\"2\">Login fallito
    <a href=\"javascript:history.back()\">indietro</a></font>"
    ; exit(); } 
    $fupload $_FILES['loadPdf']['name'];
    $ff=$_FILES['loadPdf']['tmp_name']; 
     
    //lo spedisce via ftp $upload=ftp_put($ftp_connect,"privato/docs/".$fupload,$ff,FTP_BINARY); 
    if (!$upload) { echo "FTP upload has encountered an error!"print_r(error_get_last()); } else { echo "Uploaded file with name $name "; } 
    ftp_quit($ftp_connect); 
    ma niente da fare; ottengo questo messaggio di errore:
    codice:
    Array ( [type] => 2 [message] => ftp_put() [function.ftp-put]: Filename cannot be empty [file] => /xxxx/upload.php [line] => 40 )
    allora ho eseguito il var_dump di $_FILES: il pezzo interessante è questo
    codice:
    ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0)
    smadonnando, ho estratto quest'altro valore alle impostazioni di php.ini:

    codice:
    upload_tmp_dir no value no value
    concludo dicendo che nel form enctype="multipart/form-data"

    considerato che non posso intervenire sulle impostazioni del server, che cosa mi resta da fare????
    grazie e saluti

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Questo è il codice che ho usato tempo fa per caricare file via FTP, vedi se ti torna utile
    Codice PHP:
    $conn_id ftp_connect($ftp_server);
    if(!
    conn_id) die("Collegamento FTP fallito!");
    $login_result ftp_login($conn_id$ftp_user$ftp_pass);
    ftp_pasv($conn_idtrue);

    foreach(
    $_FILES as $value) {
        if (
    $value['name'] != "" && $value['name'] != null)
            if ( ! 
    ftp_put($conn_id$cartella_destinazione$value['tmp_name'], FTP_BINARY)) {
                echo 
    "Upload file ".$value['name']." fallito!
    "
    ;
            }
        }
    }
    ftp_close($conn_id); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    170


    niente da fare...
    l'errore è sempre lo stesso
    entra correttamente in passive mode, ma poi ottengo
    codice:
    ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0)
    sempre per i file > 2MB

    non so cos'altro inventarmi.

    p.s.: la maschera di innsmouth è il mio preferito...

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Sicuro che sia per i file più grandi di 2MB? hai provato a cricarne uno solo da più di 2MB ma meno di 8?

    L'FTP non dovrebbe risentire della limitazione dei 2MB, quel limite è per il caricamento tramite HTTP, secondo me il problema potrebbero essere gli 8MB per la form (il post_max_size).

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    170
    sicuro...
    ho caricato lo stesso identico script su un altro sito di prova; le impostazioni di php riportano
    upload_max_filesize 18M 18M
    post_max_size 22M 22M

    ho provato con un file di 2.5MB e poi con uno da 11MB e va tutto bene, mentre nel sito reale un file di 2.8MB ha dato il solito errore.

    ho provato a scrivere un .htaccess per superare il limite, ma forse anche perchè l'ho compilato male, mi da errore 500.
    prima di chiedere la modifica dei suddetti parametri (e magari il trasferimento del dominio...), c'è una soluzione?
    grazie comunque

  6. #6
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573
    Le funzioni FTP non sono utilizzabili per aggirare l'impostazione di upload_max_filesize, anche se vengono usate per salvare il file nella posizione desiderata, il form invia il file al server via HTTP con la relativa limitazione di upload_max_filesize:
    codice:
    ["error"]=> int(1)
    http://it2.php.net/manual/en/feature...oad.errors.php
    UPLOAD_ERR_INI_SIZE
    Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.
    prova con un .htaccess:
    codice:
    php_value upload_max_filesize 10M
    php_value post_max_size = 10M
    ma non è detto che tu lo possa fare se sei in host condiviso.
    Sono configurazioni PHP_INI_PERDIR http://php.net/manual/en/configurati...nges.modes.php , niente ini_set

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    170
    grazie, enoa
    avevo provato con l'htaccess, ma non ha funzionato; in effetti, l'host è condiviso
    mi sa proprio che dovrò 'scocciare' il provider e supplicarlo di cambiare impostazioni
    grazie mille a tutti

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