mon code et p> ne fonctionne pas, le mode sans échec est éteint et j'ai même essayé de définir tout des dossiers parent à 777. P> Des idées? P> EDIT: J'ai fait état d'erreur allumée, dans ma frustration, j'ai 777'd tout le chemin juste pour m'assurer que que ce n'est pas le problème. Il faut que ce soit quelque chose de stupidement simple. P> Modifier EDIT: UPVOTES pour tous ceux qui ont répondu avec des suggestions ... mais je ne vais pas choisir une réponse puisque cela n'est toujours pas résolu, mais encore une fois Je pense que cela va être l'une de ces personnes laissées ouvertes pour toujours. P> Editer x 3: J'ai donc la résolution la plus insatisfaisante de cette question ... J'ai commencé avec une image vm propre, a rétréciée et ça marche maintenant. Pas de blague. P> p>
9 Réponses :
Vous manquez des citations autour du paramètre Nom du chemin. P>
Le code a réellement que là-bas ... Désolé dans ma frustration, j'ai oublié qu'en, je vais faire une édition. Toute autre idée?
Assurez-vous que vous avez enregistré une déclaration d'erreur afin que vous puissiez voir si cela donne des avertissements lors de l'appel de la fonction.
Est-ce que tous les répertoires parent existent?
Sinon, vous aurez besoin d'activer la récursion (supposer PHP5 ici): P>
mkdir('/path/to/your/dir',0777,true);
Tout est bon, j'avais peur de cela se produire, alors je viens de modifier la question initiale.
Ravi de voir une réponse de sept ans aide toujours les gens!
Vous devez prendre l'attribut entre guillemets:
Non, le paramètre Mode code> est défini comme une octale int afin que vous ne soit pas b> Mettre des citations autour de lui.
essayez-vous de créer ces répertoires récursives, comme vous le feriez avec et juste pour écho aux suggestions précédentes, veuillez spécifier les messages d'erreur que vous obtenez. Si vous n'entrez pas, utilisez-le avant votre appel: mkdir -p code> sur la ligne de commande? Si tel est le cas, spécifiez
true code> comme troisième paramètre sur
mkdir code> a >. P>
error_rporting (-1); // Tous les messages CODE> et
INI_SET ('"DISPLAY_ERRORS', 'ON'); CODE>. P>
C'est à peu près le code que j'ai eu au début du script. Sauf au lieu de -1, j'ai eu ceci. Est-ce censé être le -1? J'ai eu ini_set ('Display_Errors', 1); Errror_Reporting (e_all | e_strict) Suis-je supposé utiliser -1 à la place? 1 a toujours travaillé dans le passé dans l'affichage des erreurs.
C'est un masque de bit, donc -1 est essentiellement identique à "tous les bits" pour non signé Int. L'effet sera le même. Si, dans une future version ultérieure, ils ajoutent une autre e_xxx code> constante qui n'est pas incluse dans
e_all code>,
-1 code> l'inclure quand même. Cela dépend de ce que vous préférez, fondamentalement.
Avez-vous essayé avec le test le plus court possible? P>
mkdir ("répertoire", 0777); p>
Si cela ne fonctionne pas, j'essaierais de créer avec une chmod standard comme 0755 (il s'agit d'une supposition totalement aléatoire, peut-être que le serveur ne permettra pas de créer 0777 via PHP) P>
Si cela ne fonctionne pas, je dirais que le serveur a probablement besoin d'une configuration / PHP différente, cessez-vous de l'écriture sur le dossier, peut-être que vous pouvez demander à votre fournisseur d'hôte? P>
J'ai un problème similaire et j'ai découvert que je n'ai pas espace libre fort> laissé sur mon lecteur. Vérifiez avec la commande df code> (sur Linux) Quelle est la pleine correspondance de votre lecteur. Il est possible que la racine soit autorisée à créer des fichiers et des dossiers dans cette situation, car il a un espace pré-réservé. Si vous exécutez votre script à partir de la ligne de commande en tant qu'utilisateur code> root code> - il n'y a pas d'erreur, mais si votre script est exécuté par
Apache code>, puis une erreur d'erreur. P>
Si quelqu'un se coince avec ce problème. Il y a une réponse que je peux vous donner que je consacre 2 heures à trouver .. J'ai essayé d'utiliser un chemin complet, et "../mydirectoryname".
Utiliser: p> au lieu de .. p>
Pour les futures références, le problème peut provenir de la possibilité que le répertoire où vous essayez de créer votre nouveau répertoire n'a pas suffisamment d'autorisation. P>
Par exemple, votre répertoire d'index pourrait ressembler à ceci:
Si Pour résoudre ceci, j'utiliserais la commande:
Je ne m'inquiète pas pour la sécurité maintenant, essayez simplement de résoudre le problème immédiat. Vous pouvez bien sûr rechercher des paramètres de meilleure autorisation, mais l'idée est que votre Ensuite, votre bonne chance p> index.php new_dirs_here code> p>
new_dirs_here code> n'a pas assez d'autorisation, vous ne pouvez pas créer de direcories à l'intérieur. P>
CHMOD 777 NEW_DIRS_HERE CODE> P>
New_Dirs_Here code> doit avoir suffisamment d'autorisations. P>
mkdir () code> Le dossier devrait fonctionner très bien. P>
Vous êtes un ange absolu, j'avais besoin de cela. Pour une raison quelconque, aucune des autres réponses n'a fonctionné, même avec CHMOD 0755 et spécifiant les modes de MKDIR
Assurez-vous que les annuaires des parents ont des autorisations d'écriture correctes, c'était mon problème P>
Aucun, ça passe juste c'est une chose et ne crache aucune erreur. J'ai même essayé de voir si c'était en quelque sorte placer à tort le nouveau répertoire ailleurs et je pouvais trouver si n'importe où.
Quelques choses: le processus qui exécute-t-il ce code est-il autorisé à écrire dans le répertoire parent? Si vous exécutez ceci via un serveur Web, avez-vous vérifié les journaux des messages d'erreur?
Donc, vous devez transformer une déclaration d'erreur sur
@Col. Shrapnel: Ah, oui c'est vrai, j'avais supposé que ce soit le cas, mais nous savons ce qui se passe lors de l'hypothèse. Merci d'avoir fait remarquer cela!
Haha Yeah Reporting d'erreur est sur mais il ne craque aucune erreur d'erreur, j'ai même essayé d'utiliser ce code Stackoverflow.com/questions/927564/... et il ne revient pas avec des erreurs, tout le chemin est 777 de / var vers www dans le répertoire de projet. Ça me fait sortir mes cheveux. Il faut que ce soit quelque chose de stupidement simple.
Je doute que vous ayez votre déclaration d'erreur vraiment sur.
Je suis surtout à court d'idées ici, sauf pour vous suggérer de courir avec la ligne de commande PHP si possible (et que vous n'avez pas déjà) pour voir si cela crachera un message d'erreur. Si votre script existant ne fonctionnera pas sans le serveur Web, créez simplement un court script comme: PHP $ retval = mkdir ("/ certains / absolus / path"); echo "\ $ retval = '". $ retval. "'\ n"; ?>
Outre ERROR_REPORTING, est "DISPLAY_ERRORS" également défini sur 1? C'est une chose que j'aime toujours oublier et si cela n'a pas l'aide et aucune erreur n'est affichée, j'ai également manqué d'idées.
C'est le code que j'utilise habituellement pour afficher des erreurs tout en testant ... INI_SET ('"Display_Errors', 1); error_rporting (e_all | e_strict); Mais comme je l'ai dit, j'ai essayé cet autre code que j'ai trouvé ici, alors je ne sais pas.