Programmer son client FTP avec php

Programmez votre propre client FTP en PHP

Vous aurez peut être envie un jour de pouvoir uploader des fichier dans un serveur web, afin de mettre en place une nouvelle version d’un script. Si vous pouvez automatiser cette tâche, vous aurez un grand gain de productivité. On peut imaginer que vous ayez déployé un CMs sur plusieurs serveurs web, et que vous vouliez mettre en place une mise à jour en trois fois rien de temps.

 

Ceci est possible en php, votre langage de programmation favori. Fini donc les laborieuses connexions à la main avec Filezilla, on va automatiser ça.

FTP en PHP avec CURL

Ce n’est pas l’option la plus simple. En effet, il faut disposer de la bibliothèque CURL (pas si difficile que ça en fait), mais surtout écrier plusieurs lignes de php :

$ch = curl_init();
$localfile = ‘test.txt’;
$fp = fopen($localfile, ‘r’);

curl_setopt($ch, CURLOPT_URL, ‘ftp://login:password@www.monsite.com/public_html/’.$localfile);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));

curl_exec ($ch);
$error_no = curl_errno($ch);
curl_close ($ch);

if ($error_no == 0) {
$message = ‘File uploaded successfully.’;
} else {
$message = « File upload error: $error_no. Error codes explained here http://curl.haxx.se/libcurl/c/libcurl-errors.html. »;
}
echo $message;

?>

 

ce script va charger le fichier test.txt de votre disque dur vers le serveur FTP et donc votre site web !

Mais comme toujours avec CURL, c’est fastidieux, il faut instancier l’objet CURL, injecter de paramètre et l’exécuter.

FTP en PHP plus simple avec les fonction FTP de PHP

Nos allons voir que c’est plus intuitif avec les fonction FTP de PHP.

En effet pour faire la même chose que le script ci-dessus:

// Ouverture de quelques fichiers pour lecture
$file = ‘somefile.txt’;
$fp = fopen($file, ‘r’);

// Mise en place d’une connexion basique
$conn_id = ftp_connect($ftp_server);

// Identification avec un nom d’utilisateur et un mot de passe
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Tente de charger le fichier $file
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
echo « Chargement avec succès du fichier $file\n »;
} else {
echo « Il y a eu un problème lors du chargement du fichier $file\n »;
}

// Fermeture de la connexion et du pointeur de fichier
ftp_close($conn_id);
fclose($fp);

?>

Ici on crée une connexion FTP comme si on le faisait pour une connexion Mysql, on ouvre le fichier en local et on le met sur le serveur FTP. Avouez que c’est quand même plus lisible !

Retour en haut