Créer un dossier : ftp_mkdir
Cette fonction est très connue dans la plupart des langages. Elle permet de créer un dossier (mk :
make et dir :
directory, soit « créer un dossier ») sur le serveur.
Elle s'utilise ainsi :
Code : PHP | <?php
$mon_dossier = ftp_mkdir($ftp, "superdossier");
?>
|
Ainsi, ce code créera un dossier à la racine (on n'a pas précisé de dossier parent) portant le nom « superdossier ».
Par ailleurs, cette fonction retourne le nom du dossier créé ou
false en cas d'échec.
Si l'on veut créer un dossier dans un autre dossier :
Code : PHP | <?php
$mon_dossier = ftp_mkdir($ftp, "site/image/design/superdossier");
?>
|
Et voilà, le dossier
superdossier a été créé à l'emplacement
site/image/design.
Supprimer un dossier : ftp_rmdir
Également connue, la fonction
ftp_rmdir
(
remove directory, soit « supprimer un dossier ») supprime un dossier sur le serveur FTP.
Elle prend comme paramètres la ressource FTP et le nom du dossier à supprimer, et retourne
true si le dossier a bien été supprimé (
false en cas d'échec).
Code : PHP | <?php
if(ftp_rmdir($ftp, "superdossier"))
{
echo 'Le dossier "superdossier" a bien été supprimé !';
}
else
{
echo 'Suppression du dossier "superdossier" impossible.';
}
?>
|
Se déplacer à travers les dossiers : ftp_chdir
La fonction
ftp_chdir
(soit
change directory : « changer de dossier ») vous déplace dans un autre dossier. Elle prend en paramètres la ressource FTP et le dossier dans lequel on souhaite aller, et retourne
true si l'on a bien pu se déplacer,
false dans le cas contraire.
Code : PHP | <?php
if(ftp_chdir($ftp, "site"))
{
echo 'Déplacement dans le dossier "site" réussi !';
}
else
{
echo 'Déplacement dans le dossier "site" <b>échoué</b> !';
}
?>
|
Situer où l'on est : ftp_pwd
La fonction
ftp_pwd
(pwd :
print working directory, soit « afficher le dossier dans lequel on travaille ») retourne (et n'affiche pas comme on pourrait le croire) le nom du dossier dans lequel on se situe. Elle prend en paramètre la ressource FTP seulement. En cas d'erreur, elle retourne
false.
Code : PHP | <?php
$pwd = ftp_pwd($ftp);
if(!$pwd)
{
echo 'Erreur !';
}
else echo 'Dossier actuel : ' .$pwd. '.';
?>
|
Exécuter une commande FTP : ftp_exec
La fonction
ftp_exec
exécute (

) la commande envoyée en second paramètre (le premier étant toujours la ressource FTP) et renvoie
true (ainsi que la réponse 200 pour dire que tout a bien été fait correctement dans le meilleur des mondes) si la commande a réussi,
false dans le cas contraire.
Code : PHP | <?php
if(ftp_exec($ftp, "rmdir superdossier"))
{
echo 'La commande a réussi !';
}
else
{
echo 'La commande a échoué !';
}
?>
|
Voici une
page qui liste toutes les actions FTP possibles. C'est plus poussé que les fonctions mais un petit peu plus compliqué.
Modifier les droits : ftp_chmod
Qu'est-ce que le chmod ?
Chmod signifie
change mode et sert à modifier les droits d'un fichier. En effet, chaque fichier transitant sur le web a trois droits différents :
- les droits du propriétaire du fichier ;
- les droits du groupe auquel le fichier appartient ;
- les droits des autres utilisateurs.
En général, le propriétaire du fichier et le groupe auquel appartient le fichier ont tous les droits, du fait qu'ils sont censés faire « partie de l'administration du serveur ». Quant aux autres, ils ont en général seulement le droit de lire le fichier et de l'exécuter.
Pourquoi les autres n'ont-ils que le droit de lire ?
Prenons un exemple. Vous avez fait un super script en PHP qui permet de gérer le livre d'or. Si n'importe qui peut lire et y écrire :
- on peut récupérer vos mots de passe d'accès à la base de données, connaître l'architecture de votre site ainsi que le nom des tables de votre base de données ;
- on peut vider votre base de données, récupérer toutes les entrées ou en modifier certaines (pour tricher dans un jeu par exemple) ;
- on peut y écrire et y mettre du code malveillant, comme récupérer le pseudo du membre connecté et l'insérer dans une base de données.
En gros, ça peut mettre votre site en danger, c'est pour cela qu'il faut bien faire attention à ne pas laisser les utilisateurs faire ce qu'ils veulent avec vos fichiers.
On distingue donc trois « valeurs » possibles :
- écrire dans le fichier (w, pour write) ;
- lire dans le fichier (r, pour read) ;
- exécuter le fichier (x, pour execute).
Bref, laisser les utilisateurs lire et écrire dans le fichier, c'est vraiment dangereux. Il ne faut jamais faire confiance aux utilisateurs, ils sont imprévisibles, se terrent dans l'ombre, attendant le moment propice pour défaire tout votre site.
Mais n'ayez pas peur pour autant, il suffit juste de mettre les droits des utilisateurs à l'exécution seulement.
Chacun a une valeur :
- lire vaut 4 ;
- écrire vaut 2 ;
- exécuter vaut 1.
Ce qui signifie que si l'on veut pouvoir lire et écrire dans un fichier, la valeur est 6.
Maintenant, les droits sont répartis ainsi : Propriétaire - Groupe - Utilisateurs.
Par habitude, je mets au Groupe et au Propriétaire les mêmes droits. Donc, si je veux que le propriétaire et le groupe puissent écrire, lire et exécuter, et que les utilisateurs puissent lire et exécuter, il faut donc faire :
Secret (cliquez pour afficher)
Si vous avez trouvé ça, vous avez tout compris.
Donc, la fonction
ftp_chmod
prend en paramètres la ressource FTP, le mode et le fichier affecté par la modification. Elle retourne
true si le fichier a bien été affecté,
false dans le cas contraire.
Code : PHP | <?php
if(ftp_chmod($ftp, 0775, "fichier"))
{
echo 'Les droits du fichier ont bien été modifiés !';
}
else echo 'Les droits du fichier n\'ont pas pu être modifiés !';
?>
|
Pourquoi ce 0 devant le « 775 » ?
Ce petit 0 signifie que l'on utilise la notation octale (base 8). Si on ne l'avait pas mis, la fonction l'aurait interprété comme un nombre décimal (base 10).
Voilà, si vous avez bien mis un fichier valide, tout devrait fonctionner.