je galere avec mes chmod

je galere avec mes chmod - PHP - Programmation

Marsh Posté le 01-09-2004 à 13:41:39    

j'arrete pas de faire des :
 
chmod('path/fichier',0755);
 
sur une dossier...
 
et il me retourne tout le temps :
 
Forbidden
You don't have permission to access /cgi-bin/logos/ on this server.

 
 
ou des :
 
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator...

 
... bouhhhhh !!!

Reply

Marsh Posté le 01-09-2004 à 13:41:39   

Reply

Marsh Posté le 01-09-2004 à 14:36:17    

j'ai fait un script...
 
 

Code :
  1. <?php
  2. $rep="cgi-bin/logos/";
  3. //change le mode du repertoire
  4.  $param="0755";
  5.  if (chmod($rep, $param))
  6.  {
  7.  echo "La commande chmod sur le repertoire \"$rep\" avec le parametre \"$param\" a bien été executée <br />";
  8.  }
  9.  else
  10.  {
  11.  echo "Erreur d'execution de la commande chmod sur \"$rep\" avec le parametre \"$param\"";
  12.  }
  13. if (is_dir($rep))
  14. {
  15.    if ($dh = opendir($rep))
  16.    {
  17.        while (($file = readdir($dh)) !== false)
  18.    {
  19.     if ($file != "." && $file != ".." )
  20.  {
  21.           $filelist[]= $file;
  22.  }
  23.        }
  24.        closedir($dh);
  25.    echo "Il y a ".count($filelist)." fichiers dans le repertoire ".$rep."<br />";
  26.  }
  27. }
  28. else
  29. {
  30. echo "Mauvais dossier";
  31. }
  32. // change le mode de chaque fichier $filelist
  33. if(!empty($filelist))
  34. {
  35. foreach($filelist as $key)
  36. {
  37.   $param="0755";
  38.   if (chmod($rep.$key, $param))
  39.   {
  40.   echo "La commande chmod sur le fichier \"$rep.$key\" avec le parametre \"$param\" a bien été executée<br />";
  41.   }
  42.   else
  43.   {
  44.   echo "Erreur d'execution de la commande chmod sur le fichier \"$rep.$key\" avec le parametre \"$param\"<br />";
  45.   }
  46. }
  47. }
  48. ?>


 
voila ce que ça me retourne :
 

Code :
  1. La commande chmod sur le repertoire "cgi-bin/logos/" avec le parametre "0755" a bien été executée
  2. Warning: opendir(cgi-bin/logos/): failed to open dir: Permission denied in /u/clonecop/public_html/chmod.php on line 19


 
 :??:  :pt1cable:


Message édité par freed102 le 01-09-2004 à 14:40:12
Reply

Marsh Posté le 01-09-2004 à 17:18:03    

personne n'a un petit tuyau ??? c bizarre non ?

Reply

Marsh Posté le 01-09-2004 à 17:20:14    

Tu n'a le droit que de tripoter des fichiers qui t'appartiennent. cgi-bin ne doit pas être à toi (enfin, au user qui fait tourner php).
 


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 01-09-2004 à 17:22:47    

http://www.nexen.net/docs/php/anno [...] is-dir.php

Citation :


Note
 
Les résultats de cette fonction sont mis en cache. Voyez la fonction clearstatcache plus de détails.


 
http://www.nexen.net/docs/php/anno [...] tcache.php
 
[edit]
En bref, je pense que tu te fais jeter par is_dir parce-qu'il a gardé en cache les anciens droits de ton repertoire, d'où nécéssité d'appeler clearstatcache avant!


Message édité par skeye le 01-09-2004 à 17:30:04

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 01-09-2004 à 21:26:32    

Le paramètre du chmod doit être en octal
 
donc $param = 0775; et non pas $param = "0775"

Reply

Marsh Posté le 02-09-2004 à 11:15:16    

ratibus a écrit :

Le paramètre du chmod doit être en octal
 
donc $param = 0775; et non pas $param = "0775"


c exactement ça !!
Merci beaucoup !! now ça marche ! :)
thx !!  
(et même mon foreach marche à merveille alors que j'avais jamais utilisé ce truc !)

Reply

Marsh Posté le 02-09-2004 à 11:17:36    

freed102 a écrit :

c exactement ça !!
Merci beaucoup !! now ça marche ! :)
thx !!  
(et même mon foreach marche à merveille alors que j'avais jamais utilisé ce truc !)


 
par contre peut on m'expliquer pourquoi j'ai ça comme result :
 


La commande chmod sur le repertoire "cgi-bin/logo/" avec le parametre "493" a bien été executée  
Il y a 7 fichiers dans le repertoire cgi-bin/logo/
La commande chmod sur le fichier "cgi-bin/logo/.AURORE.gif" avec le parametre "0755" a bien été executée
La commande chmod sur le fichier "cgi-bin/logo/.AMEX.gif" avec le parametre "0755" a bien été executée
La commande chmod sur le fichier "cgi-bin/logo/.CLEF.gif" avec le parametre "0755" a bien été executée
La commande chmod sur le fichier "cgi-bin/logo/.MASTERCARD.gif" avec le parametre "0755" a bien été executée
La commande chmod sur le fichier "cgi-bin/logo/.VISA.gif" avec le parametre "0755" a bien été executée
La commande chmod sur le fichier "cgi-bin/logo/.INTERVAL.gif" avec le parametre "0755" a bien été executée
La commande chmod sur le fichier "cgi-bin/logo/.CB.gif" avec le parametre "0755" a bien été executée


 
... il sort d'ou le "493" ??? ça veut dire quoi ?

Reply

Marsh Posté le 02-09-2004 à 11:20:05    

0755 en octal, tu le converti en décimal (calculette windows fera l'affaire) et tu trouve: 493 !!!


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 02-09-2004 à 11:38:05    

Xav_ a écrit :

0755 en octal, tu le converti en décimal (calculette windows fera l'affaire) et tu trouve: 493 !!!


 
bon je capte pas.. mon prob n'est pas encore resolu à 100%
 :??:  
 
donc ma reponse est bonne :

La commande chmod sur le repertoire "cgi-bin/logo/" avec le parametre "493" a bien été executée  
Il y a 7 fichiers dans le repertoire cgi-bin/logo/
La commande chmod sur le fichier "cgi-bin/logo/.AURORE.gif" avec le parametre "493" a bien été executée
La commande chmod sur le fichier "cgi-bin/logo/.AMEX.gif" avec le parametre "493" a bien été executée
La commande chmod sur le fichier "cgi-bin/logo/.CLEF.gif" avec le parametre "493" a bien été executée
La commande chmod sur le fichier "cgi-bin/logo/.MASTERCARD.gif" avec le parametre "493" a bien été executée
La commande chmod sur le fichier "cgi-bin/logo/.VISA.gif" avec le parametre "493" a bien été executée
La commande chmod sur le fichier "cgi-bin/logo/.INTERVAL.gif" avec le parametre "493" a bien été executée
La commande chmod sur le fichier "cgi-bin/logo/.CB.gif" avec le parametre "493" a bien été executée


 
mais j'accede toujours pas au dossier !!!
 

Forbidden
You don't have permission to access /cgi-bin/logo on this server.
 
 
--------------------------------------------------------------------------------
 
Apache/1.3.31 Server at www.clonecopy.net Port 80

Reply

Marsh Posté le 02-09-2004 à 11:38:05   

Reply

Marsh Posté le 02-09-2004 à 11:49:24    

Xav_ a écrit :

0755 en octal, tu le converti en décimal (calculette windows fera l'affaire) et tu trouve: 493 !!!


 
ça... je sais pas faire ! lol (ça doit pas etre bien compliqué mais je sais pas faire !
 
octal et binaire ? c pas pareil ?

Reply

Marsh Posté le 02-09-2004 à 11:52:31    

octal = (base 8)
binaire = (base 2)
 
pis 0755 c'est pas du binaire [:mlc]
 
faut revoir vos classiques là...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 02-09-2004 à 11:55:20    

JagStang a écrit :

octal = (base 8)
binaire = (base 2)
 
pis 0755 c'est pas du binaire [:mlc]
 
faut revoir vos classiques là...


 
oui là je sais pas ça encore... en fait je me suis jamais vraiment posé la question !
 
... bon mon prob persiste...
 
http://www.clonecopy.net/cgi-bin/logo/VISA.gif

Reply

Marsh Posté le 02-09-2004 à 11:57:47    

freed102 a écrit :

ça... je sais pas faire ! lol (ça doit pas etre bien compliqué mais je sais pas faire !
 
octal et binaire ? c pas pareil ?


je sais pas toi mais perso je préfère faire 10000 pompes en binaire qu'en octal :whistle:  
(et accessoirement je préfère encore les faire en octal qu'en base ascii)


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
Reply

Marsh Posté le 02-09-2004 à 11:59:16    

bon... j'ai devié mon prob.. effectivement je crois que j'ai des prob avec le dossier cgi-bin...  

Reply

Marsh Posté le 02-09-2004 à 13:28:03    

JagStang a écrit :

octal = (base 8)
binaire = (base 2)
pis 0755 c'est pas du binaire [:mlc]
faut revoir vos classiques là...


 
a quel moment j'ai parlé de binaire ???  :??:  
 
mes classiques marchent plutot pas mal il me semble:
j'ai dis "0755" octal et "493" décimal --> je continu de penser que c'est juste... ;)
 
Pour plus de détails:
01ED - Hexa (base 16) - (0123456789ABCDEF)
493 - Décimal (base 10) - (0123456789)
0755 - Octal (base 8) - (01234567)
111101101 - Binaire (base 2) - (01)
 
Je pense pas pouvoir faire mieux... :)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 02-09-2004 à 13:35:22    

Nan, c'est freed qui demandait si octal = binaire. No way.
 
Parfois je me demande si certains "développeurs" comprennent vraiment ce qu'ils sont en train de faire.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 02-09-2004 à 13:57:20    

oki (je laisse les détails quand meme, j'ai l'impression que ça peu servir)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 02-09-2004 à 14:13:09    

en effet Xav_ je ne m'adressais pas à toi...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 02-09-2004 à 15:52:35    

sircam a écrit :

Nan, c'est freed qui demandait si octal = binaire. No way.
 
Parfois je me demande si certains "développeurs" comprennent vraiment ce qu'ils sont en train de faire.


 
... et vlan ! ramasse tes dents ! :heink:

Reply

Marsh Posté le 02-09-2004 à 15:53:17    

les bases je les connais.. Mais les details... beaucoup moins !

Reply

Marsh Posté le 02-09-2004 à 16:16:05    

Désolé, je ne voulais pas te blesser. Ce n'est certainement pas un reproche que je voulais t'adresser.
 
Tu prends ça un peu à l'envers en fait. La conversion d'une base vers une autres (binaire, octal, ...) fait partie... des bases, au même titre que les structures de données, les algos élémentaires, ...
 
Le reste vient au dessus. Tu utilises une méthode, chmod en l'occurence, de manière profane, sans vraiment comprendre la signification de l'argument qui lui est passé. Tu ne pourras pas vraiment comprendre à quoi il sert, ni identifier l'erreur correspondante 493 si tu ne possède pas cette base. Et il en sera ainsi pour 1000 et une choses. C'est ce qui peut te bloquer dans ton évolution.
 
Je ne te range pas dans la catégorie des "script-kiddies", qui copient-collent du code sans rien comprendre, pour ensuite essayer de chipoter ça et là et de l'adapter au cas de figure.
 
Reprends la remarque de Jag, "faut revoir vos classiques" : c'est bien de celà dont je parle. Que tu sois développeur PHP, Java ou C, ce tronc commun, indépendant du langage, est la clef de voûte qui fait tenir tout l'édifice.
 
Maintenant, se farcir tout ça, des trucs peu fonctionnels sur le moment et pas toujours marrants, nécessitant pas mal d'étude... on peut être tenté de se lancer comme ça, sans préalable, ce que je comprends parfaitement, et respecte.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 02-09-2004 à 16:53:45    

Que je ne connaisse pas le binaire ou l'octale ou l'hexadecimal au pied de la lettre... c une lacune... j'en suis conscient !
Mais bon en ce qui concerne chmod... quand tu regardes l'API ils ne disent pas vraiment ce que veulent dire ces chiffres ou bien faut capter !!!
 

Code :
  1. Le paramètre mode est constitué de trois valeurs octales qui spécifient les droits pour le propriétaire, le groupe du propriétaire et les autres, respectivement. Chaque composant peut être calculé en ajoutant les droits désirés. Le chiffre 1 donne les droits d'exécution, le chiffre 2 les droits d'écriture et le chiffre 4 les droits de lecture. Ajoutez simplement ces nombres pour spécifier les droits voulus. Vous pouvez aussi lire le manuel des systèmes Unix avec man 1 chmod et man 2 chmod. Exemple 2. Comment utiliser le paramètre mode de chmod()
  2. // Lecture et écriture pour le propriétaire, rien pour les autres
  3. chmod ("/un_dossier/un_fichier", 0600);
  4. // Lecture et écriture pour le propriétaire, lecture pour les autres
  5. chmod ("/un_dossier/un_fichier", 0644);
  6. // Tous pour le propriétaire, lecture et exécution pour les autres
  7. chmod ("/un_dossier/un_fichier", 0755);
  8. // Tout pour le propriétaire, lecture exécution pour le groupe, rien pour les autres
  9. chmod ("/un_dossier/un_fichier", 0750);


 
... et que 0755 vaut 493 ... j'en suis fort aise !!! Mais bon.. je me sens pas spécialement avancé !!!
 
Cependant je vais me pencher là dessus ça pourra me servir (je vais revoir mes vieux manuels de mon Atari ST et Falcon... c'est dans les vieux plats qu'on fait les meilleurs soupes !!!)

Reply

Marsh Posté le 02-09-2004 à 16:58:57    

Citation :

quand tu regardes l'API ils ne disent pas vraiment ce que veulent dire ces chiffres ou bien faut capter !!!


1 = execution
2 = ecriture
4 = lecture
 
751
7 --> ce chiffre est les droits pour le proprietaire (4+2+1)
5 --> pour le groupe (4+1)
1 --> toutes autres personnes


Message édité par Sebastien le 02-09-2004 à 16:59:53
Reply

Marsh Posté le 02-09-2004 à 17:19:31    

ben si la doc est très claire:
* Les droits sont caractérisés par 3 chiffres en octal (donc entre 0 et 7 compris), propriétaire, groupe propriétaire et autres
* Les niveaux de droits correspondent au code 1 = execution, 2 = écriture, 4 = lecture
* Pour calculer les droits, il suffit d'ajouter les valeurs des niveaux
Donc 0 = rien, 1 = exec, 3 = exec+ecriture, 4 = lecture, 5 = exec+lecture, 6 = lecture+ecriture et 7 = tous les droits
* Pour affecter les droits, il suffit d'affecter la valeur octale obtenue au moyen de chmod
 
Ensuite, le message d'erreur convertit ton octal (0755 = octal(755)) en décimal (493), parce que le système d'IO fonctionne en décimal c'est tout


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
Reply

Marsh Posté le 02-09-2004 à 17:32:02    

freed102 a écrit :

Que je ne connaisse pas le binaire ou l'octale ou l'hexadecimal au pied de la lettre... c une lacune... j'en suis conscient !
Mais bon en ce qui concerne chmod... quand tu regardes l'API ils ne disent pas vraiment ce que veulent dire ces chiffres ou bien faut capter !!!


Justement ! C'est précisemment ce manque de bagage qui fait que ça n'a pas fait 'tilt'. C'est vrai que ce passage de la doc est super mal écrit (et la VO ne vaut pas mieux), mais toutes ces connaissances que tu qualifiais de "détails" t'auraient mis la puce à l'oreille.
 
Ceci dit, quant bien même la doc aurait été correctement torchée, ton approche serait restée la même, càd profane (ce qui n'est nullement péjoratif), puisque "octal" ne t'aurait rien dit.
 
D'ailleurs, je ne sais pas ce que dit ta doc en VF, mais en VO, juste avant le passage que tu cites, on peut lire :
 
" Note that mode is not automatically assumed to be an octal value, (...)"
 
Ca ne m'étonnerait pas que ce passage existe aussi en FR.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 02-09-2004 à 17:38:27    

Reply

Marsh Posté le 03-09-2004 à 09:15:06    

Code :
  1. 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):


 
Et bien voilà, octal apparaît aussi en Frenchie, comme je le supposais. [Bourdel, maintenant il m'ouvre la doc uniquement en FR, obligé de virer ses propres cookies :fou:]
 
Il faut remarquer la différence de formulation entre EN et FR, qui me laisse pour le moins perplexe :
 

Code :
  1. Note that mode is not automatically assumed to be an octal value, so strings (such as "g+w" ) will not work properly. To ensure the expected operation, you need to prefix mode with a zero (0):


 
=> Toujours lire la doc dans sa langue d'origine, même si c'est en japonais, en chinois ou en arabe :lol:


Message édité par sircam le 03-09-2004 à 09:16:50

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 03-09-2004 à 13:08:50    

pour rendre un fichier executable... c bien le parametre +x ?

Reply

Marsh Posté le 03-09-2004 à 13:11:51    

j'ai fait 0777 ... ça marche :-/

Reply

Marsh Posté le 03-09-2004 à 13:46:46    

tu m'étonnes, t'as filé tous les droits à tout le monde espèce de cochon :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
Reply

Marsh Posté le 03-09-2004 à 13:51:15    

Mais c'est dégueulasse !


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 03-09-2004 à 15:26:30    

sircam a écrit :

Mais c'est dégueulasse !


si je veux juste donner les droits d'execution en plus.. je fais 0766(au lieu de 0755) ?

Reply

Marsh Posté le 03-09-2004 à 15:28:01    

bah non... puisque 5 c'est exec+lecture ça devrait suffir !
mais quand je fais 0755 ça marche po !

Reply

Marsh Posté le 03-09-2004 à 20:29:42    

Salut à tous !
 
J'ai ce petit soucis avec le chmod de php :  
 
Code :  
 $d = dir($dirName);
 chmod($d->path,0777);
 
Résultat :  
 
Warning: chmod(): Operation not permitted in /home/reseau/public_html/dirlist.php on line 18
 
Je veux donc "chmod"é un répertoire que j'ai créé moi-même,
 
J'ai mis Safe_mode = on dans le php.ini
Comme vous pouvez le voir, je suis sous Linux.
 
Un indice ?  
 
Merci !

Reply

Marsh Posté le 06-09-2004 à 17:44:05    

lesanglier a écrit :

Salut à tous !
 
J'ai ce petit soucis avec le chmod de php :  
 
Code :  
 $d = dir($dirName);
 chmod($d->path,0777);
 
Résultat :  
 
Warning: chmod(): Operation not permitted in /home/reseau/public_html/dirlist.php on line 18
 
Je veux donc "chmod"é un répertoire que j'ai créé moi-même,
 
J'ai mis Safe_mode = on dans le php.ini
Comme vous pouvez le voir, je suis sous Linux.
 
Un indice ?  
 
Merci !


 
moi je fais direct un
 
$dir="path/dossier/";
mkdir($dir);
chmod($dir,0755);

Reply

Marsh Posté le 06-09-2004 à 17:55:41    

Citation :

cgi-bin/logo/.CB.gif


 
y'aurait pas comme un point en trop là ? o_O


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 06-09-2004 à 18:08:19    

non non ça c t une erreur de concatenation lors de l'affichage (echo)
 
echo "La commande chmod sur le fichier \"$rep.$key\" avec le parametre \"$param\" a bien été executée<br />";

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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