Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/09/2012, à 23:27

kleer

Aide sur chmod() php5-cli [RESOLU]

Bonjour à tous

Je suis en train de programmer un script de sauvegarde en php5-cli
J’aimerais qu'il conserve les droits sur les fichiers copiés
Pour faire simple, je récupère les droits sur le fichier source de cette manière :

$perms = substr(sprintf('%o', fileperms($elem)), -4); // Doc de php.net

$perms contient les permissions en octal (0644, 0600 ...) selon le fichier/dossier
Ensuite, le fichier est copié dans la sauvegarde, et j'essaye de lui remettre ses permissions de cette manière :

chmod($fichier_dst, $perms);

C'est là que les choses se compliquent :
D'apres la doc de php.net, le deuxième paramètre de chmod() doit faire 4 caractères et être de type int.

php.net :

<?php
chmod("/somedir/somefile", 755);   // notation décimale : probablement faux
chmod("/somedir/somefile", "u+rwx,go+rx"); // chaîne : incorrect
chmod("/somedir/somefile", 0755);  // notation octale : valeur du mode correcte
?>

Or, $perms est de type string (retour de substr())
J'ai essayé de convertir $perms en int :

settype($perms, "integer");
var_dump($perms); me retourne int(700) après la conversion. Le premier 0 n'est plus là vu qu'il est inutile (0700 = 700)
Mais il faut 4 caractères au deuxième paramètre de chmod(), donc une variable de type int, qui commence par 0.

Je sais plus quoi faire sad
J'ai aussi essayé de lui passer les permissions dans une variable de type string ("0700, 0640" ...), mais ça ne marche pas

Es ce que quelqu'un sait faire ça ?

Je rapelle que je suis en php5-cli, la première ligne du script est
#!/usr/bin/php5

Merci smile

Dernière modification par kleer (Le 12/09/2012, à 12:04)

Hors ligne

#2 Le 12/09/2012, à 05:54

pingouinux

Re : Aide sur chmod() php5-cli [RESOLU]

Bonjour,
Je ne connais pas php, mais j'ai fait une petite recherche et un test avec ton exemple. Il faut convertir le résultat octal en décimal. Ceci devrait marcher :

chmod("/somedir/somefile", octdec(755)); 

Hors ligne

#3 Le 12/09/2012, à 12:03

kleer

Re : Aide sur chmod() php5-cli [RESOLU]

Merci, ça marche ! smile

Je connaissais pas cette fonction

Hors ligne