Tutoriel FTP : interagir avec le serveur
Sur certains projets de développement, la nécessité d'interagir avec le serveur avec des commandes FTP requiert d'avoir une bonne connaissance de la documentation PHP pour y parvenir. Et encore, en lisant les demandes sur différents forums, je vois bien que certains ont du mal.
Les commandes FTP de base
Moi-même avant de gérer correctement ces actions, j'ai du lire à plusieurs reprise la documentation PHP. Pour les néophytes (ou pour ceux qui ont besoin d'un rappel sur le sujet), je vous propose un tutoriel avec quelques exemples simples à tester pour que vous compreniez bien le fonctionnement. C'est parti.
Avant toute manipulation sur le serveur FTP, il faut s'y connecter. Créez un fichier (serveur-ftp.php par exemple) pour ouvrir une connexion sur celui-ci :
<?php // Identifiants de connexion $ftp_serv = "adresse_ftp_du_serveur"; $ftp_user = "nom_utilisateur"; $ftp_pass = "mot_de_passe"; // Connexion au serveur FTP $ftp_conn = ftp_connect($ftp_serv); // Appel des identifiants $ftp_log = ftp_login($ftp_conn, $ftp_user, $ftp_pass);
Si vos identifiants sont corrects, la connexion au serveur FTP est effective. Pour vous en assurer et avoir un message à l'écran en cas d'échec de la connexion, il faut ajouter les lignes suivantes :
// Vérification de la connexion if (!$ftp_conn || !$ftp_log) { die("Impossible de se connecter au serveur ".$ftp_serv); }
De même que vous pouvez spécifier quelques paramètres comme le port et le délai de connexion qui est réglé à 90 secondes par défaut. Modifiez comme suit :
// Connexion au serveur FTP $ftp_conn = ftp_connect($ftp_serv, 21, 120);
La gestion des dossiers
Maintenant que nous sommes connectés au serveur FTP, nous allons pouvoir nous déplacer dans les dossiers et lister leur contenu afin d'effectuer tout un tas d'opérations très utiles. Nous allons partir du principe que le dossier sur lequel nous souhaitons travailler est celui qui contient les images.
Pour ouvrir le dossier contenant les images, il faut procéder comme suit :
// Ouverture d'un dossier $dossier = ftp_chdir($ftp_conn, "/www/images");
Si vous avez besoin de créer un sous-dossier dans le dossier images, rien de plus simple :
// Création d'un dossier $creation = ftp_mkdir($ftp_conn, "/www/images/dossier");
Si nécessaire, vous pouvez modifier les droits du dossier nouvellement créé :
// Modification des droits $droit = ftp_chmod($ftp_conn, 0644, "/www/images/dossier");
Important : ne pas oublier de placer un dossier index.html vide dans le nouveau dossier pour interdire l'accès direct. Pour cela, il suffit de copier celui présent dans le dossier images comme suit :
// Copie d'un fichier copy("index.html", "dossier/index.html);
De même qu'il est possible de renommer un fichier :
// Renommer un dossier rename("dossier", "dossiers");
Et pour le supprimer, c'est toujours aussi simple avec la commande adéquate :
// Supprimer un dossier $sup = ftp_rmdir($ftp_conn, "/www/images/dossier");
La gestion des fichiers
Gérer les fichiers sur le serveur est tout aussi simple. Il y a quelques fonctionnalités supplémentaires qui sont très intéressantes. Nous allons voir tout cela en détail.
Pour commencer, on va uploader un fichier sur le serveur :
$image = $_FILES['file']['name']; // Uploader un fichier $upload = ftp_put($ftp_conn, "/www/images/".$image, $image, FTP_ASCII);
Là aussi, il est possible de renommer le fichier ou bien de le supprimer du serveur :
// Renommer un fichier $nom = ftp_rename($ftp_conn, "/www/images/ancien-nom.jpg", "/www/images/nouveau-nom.jpg"); // Supprimer un fichier $sup = ftp_delete($ftp_conn, "/www/images/image.jpg");
Dans le cas d'un fichier, il peut être utile d'afficher la taille. A vous de voir comment vous formatez l'affichage en sortie :
// Afficher la taille $taille = ftp_size($ftp_conn, "/www/images/image.jpg"); echo $taille;
Lister les fichiers dans un dossier
Vous savez à présent manipuler les dossiers et les fichiers sur votre serveur FTP. À présent, nous allons voir comment créer une liste des fichiers présents dans un dossier. Voici un exemple de mise en forme basique à l'aide d'une table de l'ensemble des fichiers présents dans un dossier.
Pour arriver à ce résultat, il est nécessaire de lister les fichiers d'un dossier :
// Liste des fichiers d'un dossier $liste = ftp_rawlist($ftp_conn, "/www/images");
Grâce à cela, vous allez récupérer les informations comprenant 9 données par fichier. Elles vous serviront pour le traitement et l'affichage de votre liste :
- Donnée 0 = chmod
- Donnée 1 = numéro
- Donnée 2 = propriétaire
- Donnée 3 = groupe
- Donnée 4 = taille
- Donnée 5 = mois
- Donnée 6 = jour
- Donnée 7 = heure
- Donnée 8 = nom
Nous allons créer une petite galerie d'images en nous servant de la donnée 8 pour récupérer le nom de l'image :
// Affichage des fichiers foreach ($liste as $fichier) { $fic = preg_split("/ +/", $fichier, 9); $nom_image = $fic[8]; // Vérification de l'extension pour n'afficher que les images $ext_image = explode(".", $nom_image); if ($ext_image[1] == "gif" || $ext_image[1] == jpg || $ext_image == "png") { echo "<ul>"; echo " <li><img src="http://www.site.com/images/".$nom_image."" alt="".$ext_image[0]."" /> echo "</ul>"; } }
Avec un peu d'imagination (et de travail), vous pouvez obtenir une jolie mise en forme : Interroger la base de données pour savoir si l'image est utilisé dans un texte pour empêcher la suppression, créer des thumbs à la volée, etc.
Le fonctionnement est identique avec les fichiers tels que des PDF ou des documents Office comme le montre l'image ci-dessous. Pour le visuel, j'affiche une image différente selon l'extension du fichier.
N'oubliez pas de fermer la connexion au FTP à la fin de votre fichier comme ceci :
// Fermeture de la connexion ftp_close($ftp_conn); ?>
J'image que votre créativité vous permettra de créer des petits modules sympas pour vos scripts persos. Bon courage. ;)
La création de site Internet sur mesure est le coeur de métier de l'agence web Infini'click.
D'autres prestations sont également proposées, découvrez-les !
- Tutoriel : installer un serveur Debian (wheezy)
- Tutoriel : Installer un certificat SSL
- Piwik : monitorez tous vos sites discrètement
- Tutoriel Paypal : Intégration et configuration du paiement en ligne
- Tutoriel PayPlug : intégration au panier d'achat
- Référencement des images : l'état de l'art
- Des onglets en CSS avec JQuery
- Gildas le 04/03/2022 à 18:00
Nop j'ai que le require('fpdf.php) ; Mais pas... - Hervé le 04/03/2022 à 17:58
Gildas Tu n'appelles pas de fichier externe via un... - Gildas le 04/03/2022 à 17:50
merci de ton retour rapide, effectivement dans ma... - Hervé le 04/03/2022 à 17:45
Bonjour Gildas Effectivement, 8 ans ça fait un bail.... - Gildas le 04/03/2022 à 17:37
Bonjour Hervé, Bon j'arrive 8 ans après la... - Olivier le 16/01/2022 à 23:09
C'est clair que les actions réalisées ne correspondent...