la fonction CHMOD

la fonction CHMOD - PHP - Programmation

Marsh Posté le 16-02-2008 à 21:44:06    

Salut à tous, :hello:  
j'ai entendu parlé d'une certaine fonction chmod qui permettrait de changer les autorisation des fichiers.
et j'aimerais savoir où je pourrais trouver des tutos qui m'expliquerais clairemenent comment s'en servir, ect.
merci de me répondre rapidement   :)

Reply

Marsh Posté le 16-02-2008 à 21:44:06   

Reply

Marsh Posté le 16-02-2008 à 21:48:47    

Reply

Marsh Posté le 16-02-2008 à 21:54:56    

merci mais j'avais déjà vu ça et c'est pas super clair..
parceque ça me dit pas quel code je dois utiliser (yen a plusieurs versions OO, je pige vraiment rien)
D'ailleur, pouvez vous me dire si ce code est bon (ce dont je doute) et quelles sont les choses à changer?

Code :
  1. <?php
  2.     // Ouverture du fichier en lecture [option "r"]
  3.     // et récupération d'un pointeur (ou descripteur de fichier)
  4.     // Ici, j'ai utilisé une petite astuce afin d'afficher
  5.     // le contenu du fichier constituant ce script
  6.     // j'ai donc utilisé __FILE__ au lieu de spécifier
  7.     // un fichier par "/chemin/monfichier"
  8.     // Le @ n'est absolument pas obligatoire mais il
  9.     // evite l'affichage d'un message d'erreur (non controlé)
  10.     // dans le cas où le fichier n'existe pas.
  11. bool chmod ( string $filename , int $mode )
  12.     $fd = @fopen("monsite","r+" );
  13.  
  14.    
  15.    
  16.     // si fopen retourne faux c'est que le fichier
  17.     // ne peut être ouvert en lecture
  18.     if (!$fd) die("Impossible d'ouvrir le fichier" );
  19.    
  20.     $i=1; // compteur de ligne
  21.    
  22.     // Lorsque nous atteindrons la fin du fichier
  23.     // foef($fd) retournera faux
  24.     // et la boucle while s'arrêtera
  25.     while (!feof($fd)) {
  26.    
  27.         // Il est temps de lire une ligne du fichier
  28.         // et en tout cas au maximum 1024 caractères
  29.         $ligne = fgets($fd, 1024);
  30.         fseek($fd, 0); // On remet le curseur au début du fichier
  31. fputs($fd, "texte" ); // On écrit le nouveau nombre de pages vues
  32.         // Si la fin du fichier n'est pas atteinte
  33.         // On peut maintenant afficher la ligne
  34.         if (!feof($fd)) echo "Ligne $i : $ligne<br>";
  35.         $i++;
  36.     }
  37.    
  38.     // On a fini, on ferme !!
  39.     fclose($fd);
  40. ?>


Reply

Marsh Posté le 16-02-2008 à 22:46:17    

Code :
  1. bool chmod ( string $filename , int $mode )


T'essais de déclarer la fonction CHMOD là?
1. Ça marchera pas parce que cette fonction existe déjà
2. On ne déclare pas une fonction ainsi en PHP


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 17-02-2008 à 11:57:41    

youhou, ça je m'en doutais :p
bon alors comment je fais pour apliquer un chmod 777 sur le fichier que je veux ouvrir, lire et fermer ensuite avec mon code? (voir les fopen(), fgets() et tout ça dans le code)

Reply

Marsh Posté le 17-02-2008 à 12:37:20    

prends exemple sur les premiers exemple de :
Example#1  et EXample#2 sur le lien que t'a donné naeh
 
 

chmod ("/somedir/somefile", 755);
chmod ("/un_dossier/un_fichier", 0600);


 
 
dans ton cas :  

chmod ( "monsite" , 777 ); //si "monsite" est le nom de ton fichier

Reply

Marsh Posté le 17-02-2008 à 13:25:43    

ok merci =)
mais est il possible de mettre une url pour spécifier le nom du fichier plutot que de mettre le chemin qui y mène sur mon ordi?  
ps: et je le place où? avant ou après le fopen()?
 
édit:
mon code est devenu ça:

Code :
  1. <?php
  2.     // Ouverture du fichier en lecture [option "r"]
  3.     // et récupération d'un pointeur (ou descripteur de fichier)
  4.     // Ici, j'ai utilisé une petite astuce afin d'afficher
  5.     // le contenu du fichier constituant ce script
  6.     // j'ai donc utilisé __FILE__ au lieu de spécifier
  7.     // un fichier par "/chemin/monfichier"
  8.     // Le @ n'est absolument pas obligatoire mais il
  9.     // evite l'affichage d'un message d'erreur (non controlé)
  10.     // dans le cas où le fichier n'existe pas.
  11.     $fd = @fopen("http://test.pantoled.fr/enigme.php","r+" );
  12. chmod ( "http://test.pantoled.fr/enigme.php" , 777 ); //si "monsite" est le nom de ton fichier
  13.    
  14.    
  15.     // si fopen retourne faux c'est que le fichier
  16.     // ne peut être ouvert en lecture
  17.     if (!$fd) die("Impossible d'ouvrir le fichier" );
  18.    
  19.     $i=1; // compteur de ligne
  20.    
  21.     // Lorsque nous atteindrons la fin du fichier
  22.     // foef($fd) retournera faux
  23.     // et la boucle while s'arrêtera
  24.     while (!feof($fd)) {
  25.    
  26.         // Il est temps de lire une ligne du fichier
  27.         // et en tout cas au maximum 1024 caractères
  28.         $ligne = fgets($fd, 1024);
  29.         fseek($fd, 0); // On remet le curseur au début du fichier
  30. fputs($fd, "texte" ); // On écrit le nouveau nombre de pages vues
  31.         // Si la fin du fichier n'est pas atteinte
  32.         // On peut maintenant afficher la ligne
  33.         if (!feof($fd)) echo "Ligne $i : $ligne<br>";
  34.         $i++;
  35.     }
  36.    
  37.     // On a fini, on ferme !!
  38.     fclose($fd);
  39. ?>


 
et quand j'ouvre la page sur mon site, ça me met:
Warning: chmod(): No such file or directory in /Volumes/data/toledo_t/hack/hack.php on line 13
Impossible d'ouvrir le fichier

Message cité 1 fois
Message édité par pantoled le 17-02-2008 à 13:34:44
Reply

Marsh Posté le 17-02-2008 à 14:30:56    

pantoled a écrit :

ok merci =)
mais est il possible de mettre une url pour spécifier le nom du fichier plutot que de mettre le chemin qui y mène sur mon ordi?  


STP, pose toi la question si tu peux changer les permissions de n'importe quel site internet par http en passant en parametre l'url du fichier  ?
 
Par exemple pense tu que chmod("http://www.fnac.com/default.asp", "0777" ); va rendre le fichier default en lecture/ecriture/execution pour tous le monde  (on s'en fou si c'est un fichier asp  sur le site de la fnac, ce n'est pas le problème) ?  
 
Oui ou non d'après toi ?  
 
Dans l'attente de ta réponse. ...........

Reply

Marsh Posté le 19-02-2008 à 16:12:09    

Bonjour !!!  
 
J'ai un souci quasiment équivalent à savoir que je souhaite modifier les attributs de fichiers, mais la différence est que je souhaite changer les attributs  de TOUS LES FICHIERS D'UN REPERTOIRE.  
Comment puis-je faire ???
 
Merci d'avance

Message cité 1 fois
Message édité par tony1232 le 19-02-2008 à 16:12:21
Reply

Marsh Posté le 19-02-2008 à 17:09:29    

pantoled => j'attends toujours la reponse à ma question  
 
tony1232 => il faut que tu recupére la liste de tous tes fichiers et que tu boucle dessus pour applicquer sur chaque fichier ton chmod  
 
petite aide : http://fr2.php.net/manual/fr/ref.dir.php

Reply

Marsh Posté le 19-02-2008 à 17:09:29   

Reply

Marsh Posté le 20-02-2008 à 09:34:14    

weed a écrit :

dans ton cas :  

chmod ( "monsite" , 777 ); //si "monsite" est le nom de ton fichier



Attention, y'a une erreur dans le code. Le mode doit être un nombre octal, là t'as filé un décimal :

Code :
  1. chmod('pouet', 0777);

Reply

Marsh Posté le 20-02-2008 à 15:41:37    

et pourtant on peux voire mon exemple dans la page chmod sur php.net
http://fr2.php.net/manual/fr/function.chmod.php
 

Citation :

Il est à noter que le mode mode  est considéré comme un nombre en notation octale. Afin de vous en assurer, vous pouvez préfixer cette valeur par un zéro (mode ):


(sous entendu que ce n'est pas obligatoire)
 

Example#1 Comment utiliser chmod()
chmod ("/somedir/somefile", 755);


 
mais je suis quand meme d'accord avec toi sur la forme. Mieux vaut mettre 1 zéro pour etre dans les règles de l'art

Reply

Marsh Posté le 21-02-2008 à 21:43:37    

tony1232 a écrit :

Bonjour !!!

 

J'ai un souci quasiment équivalent à savoir que je souhaite modifier les attributs de fichiers, mais la différence est que je souhaite changer les attributs  de TOUS LES FICHIERS D'UN REPERTOIRE.
Comment puis-je faire ???

 

Merci d'avance

 


tu peu essayer avec ça :

Code :
  1. shell_exec("chmod -R 777 TON_REP" )
 

ceci marchera si www-data a la main sur le répertoire en question :)


Message édité par naeh le 21-02-2008 à 21:43:54
Reply

Marsh Posté le 21-02-2008 à 23:24:24    

et si le shell_exec est actif. C'est peut etre le cas si on a son propre serveur et si on est en dédié mais en mutualisé, MALHEURESEMENT on ne peux pas executé de command shell.

Reply

Marsh Posté le 23-02-2008 à 13:21:10    

ah je n'y avais pas pensé :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed