bonjour,
je voudrais créer un dossier ayant un chmod égal à 777.
j'utilise donc la fonction mkdir() comme ceci:
résultat: j'obtiens un dossier dont le chmod est égal à 755...Code:mkdir('dossier/', 0777);
j'ai du mal à comprendre cela.
Version imprimable
bonjour,
je voudrais créer un dossier ayant un chmod égal à 777.
j'utilise donc la fonction mkdir() comme ceci:
résultat: j'obtiens un dossier dont le chmod est égal à 755...Code:mkdir('dossier/', 0777);
j'ai du mal à comprendre cela.
c'est sur système unix ? > peut-être un souci de umask ?
en ajoutant cette ligne:
le chmod obtenu est bien 777.Code:chmod($chemin_dossier.$nomDossierCreer, 0777);
Mais mon probleme n'est pas résolu pour autant.
voici le contexte: un petit code php permettant de créer des dossier, puis de créer des sous-dossiers dans ces dossiers.
mais voila, ce code ne fonctionne que lorsque le dossier à été créer manuellement, c-à-d depuis filezilla. Je pensais que c'était du au chmod des dossiers créer (755 au lieu de 777). Pourtant, même maintenant que le chmod obtenu est bien 777, je reçoit ce message d'erreur:
Citation:
Warning: mkdir(): SAFE MODE Restriction in effect. The script whose uid is 836 is not allowed to access monsite.com/dossier_a_creer owned by uid 48 in monsite.com/script.php on line 82
cela est dû (je suppose) à la configuration PHP imposée par ton fournisseur
C.F. : http://fr.php.net/features.safe-mode
;)
question toute bete as tu essayé comme ceci :Citation:
Envoyé par pomgnon
Code:mkdir("dossier/", 0777);
Je pense que c'est surtout du au fait que c'est le serveur apache qui crée tes dossier. En conséquence, c'est lui qui a les droits dessus. Or celui-ci est différent de ton utilisateur ftp.
EN conséquence, si tu veux permette a XYZ d'accéder/voir/éditer tes dossiers, tu dois:
- soit affecter XYZ dans le groupe d'apache
- Soit changer le dossier d'utilisateur (méthode plus propre, mais largement plus complexe a mettre en oeuvre).
Enfin, il me semble, je n'ai pas encore essayer. Redis-moi ;)
Onet
apparement le safe mode est activé sur mon hebergeur
donc si je comprends bien, comme le fichier contenant le script a été envoyé par mon logiciel ftp et que le dossier parent fut crée par le serveur, ça ne fonctionne pas.Citation:
Fonctions désactivées par le Safe Mode:
mkdir() Note : Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.
alors que lorsque le dossier parent vient lui aussi du logiciel ftp, c'est le même propriétaire, il y a donc création du dossier...
malheureusement, je ne sais comment faire ce que tu me proposes, Onet.
Cela dit je me demande s'il serait possible de contourner se problème en demandant au serveur de créer la page contenant le script. Mais je ne sais pas si c'est possible.Citation:
- soit affecter XYZ dans le groupe d'apache
- Soit changer le dossier d'utilisateur (méthode plus propre, mais largement plus complexe a mettre en oeuvre).
hmmm, avant de chercher midi à quatorze heures, pourrais-tu nous expliquer ce que tu veux faire au juste ?
j'écrit un petit systeme de gestion d'images.
j'ai besoin de gérer un dossier image/ dans lequel je pourrais créer des sous-dossiers etc...
le rapport avec FTP ?
si ton dossier image est sous-jacent au répertoire web, tu ne devrais pas avoir de problème de création de répertoire dans celui-ci...
une constatation: lorsque je tente de créer un sous-dossier à un dossier, créer depuis le FTP, grace à un script (lui aussi "créer" depuis le FTP), tout ce passe comme prévu.Citation:
Envoyé par ska_root
mais lorsque je tente de créer un sous-dossier à un dossier justement crée avec la commande mkdir, je reçoit une erreur me parlant de Safe Mode.
et le Safe Mode justement:
Citation:
Vérifie que le fichier/dossier que vous allez utiliser a le même UID que le script qui est actuellement exécuté.
je ne vois toujours pas pourquoi tu veux à tout prix te prendre la tête...
commence par créer un script qui crée un répertoire images alors, ou inclues cette condition dans ton script de création des répertoire...
Code:
1
2
3 $rep_images="images"; if(!file_exists($rep_images)) mkdir($rep_images, 0755);
j'avoue ne pas te comprendre...
bon je recommence...
imaginons que ton répertoire web s'appelle "www", dans celui-ci un répertoire "images" et que tu veuilles dans l'action d'un script créer un répertoire (éventuellement de manière dynamique) nommé "repXX"
voici ce que tu peux faire (par exemple) :
tu as donc maintenant :Code:
1
2
3
4
5
6
7
8 // pour éviter de se prendre la tête avec FTP $rep_images="images"; if(!file_exists($rep_images)) mkdir($rep_images, 0755); // puis pour créer un répertoire (dynamique) pour les images $rep_images="repXX"; if(!file_exists($rep_images)) mkdir($rep_images, 0755);
c'est plus clair là ?Citation:
www/images/repXX
mais les dossiers sont déjà créer comme cela...
tant que le fichier php demande la création d'un nouveau dossier n'aura pas le meme propriétaire que le dossier, cela ne fonctionnera pas.
je viens de tester ta proposition, ca ne fonctionne pas.
oui je comprends bien... supprimes tes répertoires avec FTP, et essaies ce que je t'ai proposé et tu verras...
as tu testé ma petite modificatio nde guillemet me semble avoir eu se probleme a cause de ca?
je l'ai fais, mais ca ne change rien au probleme: le propriétaire du script n'est pas le même que celui du dossier.Citation:
Envoyé par ska_root
de quel dossier parles-tu ?Citation:
Envoyé par pomgnon
le répertoire web est par défaut associé à l'utilisateur apache, a partir de là, tout répertoire crée en dessous via un script php sera apache lui-aussi...
mais la page php contenant le code demandant de créer un dossier, il faut bien que je l'envoie sur le serveur, apache ne peut le créer à partir de rien... il n'aura donc pas le meme UID que les dossiers.
resultat: le Safe mode fait des siennes.