je galere avec mes chmod - PHP - Programmation
Marsh Posté le 01-09-2004 à 14:36:17
j'ai fait un script...
Code :
|
voila ce que ça me retourne :
Code :
|
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).
Marsh Posté le 01-09-2004 à 17:22:47
http://www.nexen.net/docs/php/anno [...] is-dir.php
Citation : |
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!
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"
Marsh Posté le 02-09-2004 à 11:15:16
ratibus a écrit : Le paramètre du chmod doit être en octal |
c exactement ça !!
Merci beaucoup !! now ça marche !
thx !!
(et même mon foreach marche à merveille alors que j'avais jamais utilisé ce truc !)
Marsh Posté le 02-09-2004 à 11:17:36
freed102 a écrit : c exactement ça !! |
par contre peut on m'expliquer pourquoi j'ai ça comme result :
|
... il sort d'ou le "493" ??? ça veut dire quoi ?
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 !!!
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 |
mais j'accede toujours pas au dossier !!!
Forbidden |
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 ?
Marsh Posté le 02-09-2004 à 11:52:31
octal = (base 8)
binaire = (base 2)
pis 0755 c'est pas du binaire
faut revoir vos classiques là...
Marsh Posté le 02-09-2004 à 11:55:20
JagStang a écrit : octal = (base 8) |
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
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 ! |
je sais pas toi mais perso je préfère faire 10000 pompes en binaire qu'en octal
(et accessoirement je préfère encore les faire en octal qu'en base ascii)
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...
Marsh Posté le 02-09-2004 à 13:28:03
JagStang a écrit : octal = (base 8) |
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...
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.
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)
Marsh Posté le 02-09-2004 à 14:13:09
en effet Xav_ je ne m'adressais pas à toi...
Marsh Posté le 02-09-2004 à 15:52:35
sircam a écrit : Nan, c'est freed qui demandait si octal = binaire. No way. |
... et vlan ! ramasse tes dents !
Marsh Posté le 02-09-2004 à 15:53:17
les bases je les connais.. Mais les details... beaucoup moins !
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.
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 :
|
... 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 !!!)
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
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
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 ! |
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.
Marsh Posté le 02-09-2004 à 17:38:27
bah c facile...
http://fr2.php.net/manual/fr/function.chmod.php
Marsh Posté le 03-09-2004 à 09:15:06
Code :
|
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 ]
Il faut remarquer la différence de formulation entre EN et FR, qui me laisse pour le moins perplexe :
Code :
|
=> Toujours lire la doc dans sa langue d'origine, même si c'est en japonais, en chinois ou en arabe
Marsh Posté le 03-09-2004 à 13:08:50
pour rendre un fichier executable... c bien le parametre +x ?
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
Marsh Posté le 03-09-2004 à 13:51:15
Mais c'est dégueulasse !
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) ?
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 !
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 !
Marsh Posté le 06-09-2004 à 17:44:05
lesanglier a écrit : Salut à tous ! |
moi je fais direct un
$dir="path/dossier/";
mkdir($dir);
chmod($dir,0755);
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
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 />";
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 !!!