Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Funzioni FTP con php

  1. #1
    Utente bannato
    Registrato dal
    Apr 2004
    Messaggi
    1,392

    Funzioni FTP con php

    Ciao raga, in questa pillola vorrei introdurre l'argomento FTP, e spiegare come utilizzare le funzioni FTP, perchè molto utili a chi non ha un client FTP e non ha la minima intenzione di scaricarlo... Allora... Si comincia!
    FTP: FILE TRANSFER PROTOCOL
    FTP è l'acronimo di File Transfer Protocol, che ci suggerisce una specie di protocollo per il trasferimento dei files. In effetti le cose stanno così, infatti le funzioni FTP servono per far comunicare i servers,
    ma servono anche per far comunicare i clients con essi: Il Protocollo FTP e le sue relative funzioni offrono un servizio per lo scambio di dati con grande affidabilità ed efficienza, ma non si deve pensare che
    le funzioni ftp non devono sostituire l'upload dei files, e non si deve credere che esse servano per l'upload.
    Ora cominciamo con la guida vera e propria.
    GUIDA ALLE FUNZIONI FTP CON PHP
    Annuncio che troverete una breve descrizione dei comandi ftp all'interno degli script che posterò in seguito. Allora... cominciamo con le funzioni principali che si devono effettuare per la connessione al server ftp:
    Codice PHP:
    <?

    /* Connessione al server ftp */

    $ftp_host 'ftp.miosito.it';

    $connect ftp_connect($ftp_host) or die("Si è verificato un errore durante la connessione al server ftp");

    /* login al server ftp */

    $username 'pater';

    $pwd 'changeme';

    $login ftp_login($connect$username$pwd) or die("Si è verificao un errore durante l'accesso al server ftp");

    /* chiusura connessione al server ftp */

    ftp_quit($connect) or die("Si è verificato un errore durante la chiusura della connessione al server ftp");

    ?>
    Qui abbiamo utilizzato 3 funzioni ftp: ftp_connect(), ftp_login() e ftp_quit(). Analizziamole insieme:
    FTP_CONNECT()
    Ftp_connect è la funzione necessaria per collegarsi al server ftp ed ad effettuare lo stream dei dati ftp. Questa funzione si può definire primaria, perchè
    essa è indispensabile per tutte le altre funzioni ftp, e per questo è SEMPRE il primo parametro di esse.
    FTP_LOGIN()
    Ftp_login è altrettanto indispensabile, perchè serve ad accedere al server ftp con la propria username e pwd.
    Il primo parametro è la connessione al server ftp, come abbiamo detto in precedenza, il secondo è l'username
    ed il terzo è la password.
    FTP_QUIT()
    Ftp_quit serve a chiudere una connessione al server ftp, ed ha come unico parametro, la connessione da chiudere.
    Lo script sopra utilizzato, naturalmente, non stamperà niente, a parte gli eventuali messaggi di errore.
    Ora passiamo alle funzioni ftp più utili, relative alla gestione dei files: Inserimento, Recupero e Cancellazione.
    Ecco un esempio di queste funzioni:
    Codice PHP:
    /* INSERIMENTO DI UN FILE */

    $destination_file "/file.exe";

    $source_file "c:/binary_file.exe";

    ftp_put($connect$destination_file$source_fileFTP_BINARY) or die("Errore durante l'upload del file $source_file nel server ftp");

    /* RECUPERO DI UN FILE */

    $destination_file "c:/text.txt";

    $source_file "/ascii_file.txt";

    ftp_get($connect$destination_file$source_fileFTP_ASCII) or die("Errore durante il recupero del file dal server ftp");

    /* CANCELLAZIONE DI UN FILE */

    $file_to_del "/file.exe";

    ftp_delete($connect$file_to_del) or die("Errore durante la cancellazione del file dal server ftp"); 
    Esaminiamo ora queste 3 funzioni dettagliatamente:
    FTP_PUT()
    Ftp_put serve ad inserire un determinato file in una determinata directory del serve ftp. Per eseguire
    queste operazioni, ftp_put, utilizza 4 parametri, che servono ad indicare la connessione al server, il file di destinazione sul server remoto, il file d'origine sul proprio hd,
    ed, infine, il tipo di file da esportare. Quest'ultimo parametro può essere:
    FTP_ASCII, se il tipo di file è ascii(files di testo);
    FTP_BINARY, se il tipo di file è binario(immagini, eseguibili...).
    Ricordo inoltre che il file di destinazione NON deve essere comprensivo di "ftp.miosito.it", basta solo che sia il nome del file comprensivo di dir(se necessario).
    FTP_GET()
    Ftp_get è necessaria per il recupero di un file dal server remoto, ed anche esso comprende 4 parametri: La connessione al server ftp, il file di destinazione sul proprio hd,
    il file d'origine sul server remoto, ed il tipo di file da importare.
    L'uso, come avrete capito, è molto simile a quello di ftp_put, ed il tipo di file da utilizzare sono quelli usati per descrivere questa funzione.
    FTP_DELETE()
    Ftp_delete serve a cancellare un file sul server ftp remoto: Esso ha bisogno solo di due parametri, che sono: Connessione e nome del file da eliminare.

    Ora, per i più curiosi, spiegherò come dare la dimensione di un determinato file, restituire la data dell'ultima modifica di un dato file, settare i permessi ad un file sul server, rinominare un file sul server ftp,
    Cominciando da questo script:
    Codice PHP:

    /* DARE LA DIMENSIONE DI UN FILE */

    $file "/file.txt";

    $size ftp_size($connect$file);

    /* RESTITUIRE LA DATA DELL'ULTIMA MODIFICA DI UN FILE */

    $file "/file.txt";

    $date ftp_mdtm($connect$file);

    /* SETTARE I PERMESSI AD UN FILE */

    $file "/file.txt";

    ftp_chmod($connect0777$file);

    /* RINOMINARE UN DETERMINATO FILE */

    $file_da_rinominare "/file.exe";

    $file_rinominato "/file_abc.exe";

    ftp_rename($connect$file_da_rinominare$file_rinominato); 
    Ora spiegherò queste funzioni:
    FTP_SIZE()
    Ftp size necessita di 2 parametri: Connessione e file remoto.
    Ricordo inoltre, che questa funzione ritorna la dimensione del file in una stringa, e, se si è verificato un errore,
    ritorna -1. Inoltre non è sicuro che sia sempre suportata dal server.
    FTP_MDTM()
    ftp_mdtm(), cui utilizza 2 parametri: Connessione e file, controlla la data di ultima modifica di un file, e la restituisce in formato UNIX timestamp.
    Prorpio come ftp_size(), restituisce -1 se si è verificato un errore, non funziona con le cartelle, e non è
    sicuro che sia sempre supportata dal server.
    FTP_CHMOD()
    Ftp_chmod serve a settare i permessi di un file remoto, ed utilizza 3 parametri: Connessione, permessi (0777, 0755, ...), e path del file.
    FTP_RENAME
    Ftp_rename serve a rinominare un file sul serve ftp remoto. Esso utilizza 3 parametri: Connessione, nome del file (da rinominare), e nome del file (rinominato).

    Tttue queste funzioni sopre descritte, ricordo sono utilizzabili solo con i files, ora spiegherò alcune funzioni che
    agiscono sulle directory: creare una directory sul server ftp, eliminare una directory dal server ftp, e ricevere un'elenco dettagliato dei files presenti in una directory.
    Codice PHP:

    /* CREARE UNA DIRECTORY */

    $dir "/directory/";

    ftp_mkdir($connect$dir);

    /* ELIMINARE UNA DIRECTORY */

    $dir "/directory/";

    ftp_rmdir($connect$dir);

    /* RICEVERE UN'ELENCO DETTAGLIATO DEI FILES IN UNA DIR */

    $dir "/directory/";

    ftp_rawlist($connect$dir); 
    FTP_MKDIR()
    Ftp_mkdir utilizza 2 parametri indispensabili: Connessione e path della cartella da creare.
    FTP_RMDIR()
    Ftp_rmdir serve ad eliminare una directory e necessita degli stessi parametri di ftp_mkdir:
    Connessione e path della cartella da eliminare.
    FTP_RAWLIST
    Ftp_rawlist serve a ricevere un'elenco dettagliato ei files presenti in una directory remota:
    Esso utilizza 2 parametri: Connessione e path della directory remota, produce un'array ed il suo output non viene in alcun modo interpretato.

    Vi lascio con un'ultima funzione, che per certi versi può risultare utile, per altri no: Restituire l'identificatore del sistema di un server ftp remoto.
    Codice PHP:
    $systype ftp_systype($connect); 
    FTP_SYSTYPE()
    Ftp_systype utilizza un solo parametro (Connessione) e restituisce una stringa.
    Spero di non aver scritto invano e che questa "guida" possa servire a qualkuno.
    Se avete ankora problemi con i comandi ftp, postate e vi risponderò al più presto!
    Un ciauz a tutti

  2. #2
    Utente bannato
    Registrato dal
    Apr 2004
    Messaggi
    1,392
    PS: Ringrazio vivamente il nostro amatissimo moderatore Bubu Sette Sette per avermi aiutato ed appoggiato durante la scrittura di questa guida.

  3. #3
    Stò facendo delle prove con i tuoi script ed ho scritto il seguente codice. Per quanto riguarda la connessione tutto ok ma non riesco ad uploadare nessun file, dove erro?

    <?

    /* Connessione al server ftp */

    $ftp_host = 'ftp.miodominio.it';

    $connect = ftp_connect($ftp_host) or die("Si è verificato un errore durante la connessione al server ftp");

    /* login al server ftp */

    $username = 'xxxxxx@aruba.it';

    $pwd = 'xxxxxxxx';

    $login = ftp_login($connect, $username, $pwd) or die("Si è verificato un errore durante l'accesso al server ftp");

    //************************************************** ************************************************** ******************************

    $destination_file = "ftp.miodominio.it";

    $source_file = "c:\WINDOWS\Desktop\prova_ftp.php";

    ftp_put($connect, $destination_file, $source_file, FTP_BINARY) or die("Errore durante l'upload del file $source_file nel server ftp");

    //************************************************** ************************************************** ******************************


    /* chiusura connessione al server ftp */

    ftp_quit($connect) or die("Si è verificato un errore durante la chiusura della connessione al server ftp");

    ?>


    Poi ho provato anche a creare una directory scrivendo

    /* CREARE UNA DIRECTORY */

    $dir = "/directory/";

    ftp_mkdir($connect, $dir);

    al posto del codice in blu ma non mi crea nessuna directory (dovrebbe crearla all'indirizzo http://www.miodominio.it/ GIUSTO???)
    Prima o poi anch'io vi insegnerò qualcosa

  4. #4
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    http://it2.php.net/manual/it/function.ftp-mkdir.php

    prova ad usare quel codice, potrebbe essere quello il problema...
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  5. #5
    allora tutta a posto se pubblico nella root del mio spazio
    ma se provo a fare un upload in un acartella non va + bene
    trovandomi su un SO linux
    ho provato achidere i permessi
    ftp_chmod è obsoleto
    quidni sto provando con chmod
    chiedo prima i permessi per la cartella
    chmod("percorso_cartella", 777);




    aiuto vi prego

    ecco i problemi

    Warning: chmod(): open_basedir restriction in effect. File(/cartella/) is not within the allowed path(s): (/home/xxxxx:/xxxx/xxx/xxx:/xxxx/xxxx/xxxx/xxx:/tmp) in....

    Warning: ftp_put(): Rename/move failure: No such file or directory in ....

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.