11
votes

Php mkdir ($ récursif = true) saute le dernier répertoire

J'ai la pièce de code suivante sur un serveur PHP 5.2.4 (no Safe_Mode) Server Linux: xxx pré>

lorsque je saisis un chemin comme: p>

'/path/to/create/recur/ively/more/'


3 commentaires

Veuillez poster la version exacte de PHP que vous utilisez. De plus, votre hôte est-il exécuté avec Safe_Mode activé?


Quel est votre niveau erron_rporting? Si quelque chose ne va pas, un e_warning est soulevé. Le mode sans échec est éteint, mais votre version PHP contient-elle quelque chose comme SUHOSIN? Comment (et d'où) avez-vous installé PHP? Compilé de "vanille" sources php.net? Grâce à la mange de package de votre distribution (lequel est-il et quel est le nom exact du paquet)? La fonction php_plain_files_mkdir () (responsable de la fonction PHP MKDIR (x, y, true)) n'a pas changé de temps et je n'ai pas trouvé de bogue associé à bugs.php.net


Alors, laissez-moi résumer: la question est "récursive mkdir ne fonctionne pas correctement", et la réponse est "Oh golly, j'ai commis une erreur et supprimé le répertoire plus loin dans le code". Ensuite, je me demande vraiment pourquoi cet utilisateur a 26 upvotes pour cette information précieuse? Je ne pense pas que 14 autres personnes avaient le même problème ...


7 Réponses :


8
votes

Essayez de supprimer la barre oblique de votre chemin.

Au moins c'est comment il est utilisé dans les exemples de la documentation mkdir .

personnellement je ne peux pas N'oubliez pas d'avoir des problèmes, mais je n'appouns que nous appends à la traînant des barres obliques, alors allez essayer cela.

:

Je viens d'essayer votre code et créé chaque répertoire comprenant le dernier. Je cours Mac OS X 10.5. Aucune idée de la raison pour laquelle cela ne fonctionne pas pour vous: - (

C'est le code que j'ai utilisé: xxx

désolé, semble être d'aucune aide ici .


0 commentaires

2
votes

Si vous avez tout essayé et que cela ne fonctionne pas, ajoutez du texte à la fin du chemin comme suit:

$path = '/path/to/create/recur/ively/more/this_wont_be_created_anyway';


5 commentaires

C'est comme ça que j'ai "résolu" dans le code actuel ... mais cela n'a aucun sens ...


C'est une saleté de travail et n'aide pas la question posée ...> peut-on vous éclairer ici s'il vous plaît?


@Sophomore - vous éclairer avec quoi?


@Andre - d'accord totalement. sinon les effets secondaires pourraient simplement déclencher.


Je suis d'accord c'est un travail autour mais bon, il a dit qu'il a testé les solutions que les gens avaient déjà posté



1
votes

Quelle est votre version PHP? Safe_Mode est-il activé?

Si tel est le cas, il pourrait s'agir de vous expérimenter http: // bugs. php.net/bug.php?id=43276


1 commentaires

5.2.4 Sans Safe_Mode, il n'est donc pas applicable, j'ai aussi essayé avec et sans escalier de fin ....



14
votes

OK Les solutions sont les suivantes: Il n'y avait pas de problème.

Je n'ai pas testé le code de manière isolée, mais seulement supposé que le code suivant ne faisait rien à la structure de répertoire ...

Comme je l'ai découvert que le répertoire a été supprimé ultérieurement par le code lui-même.

Quoi qu'il en soit, leçon apprise ...


0 commentaires

1
votes

Les répertoires intermédiaires créés sont définis en fonction de l'omasque actuel. Vous voulez quelque chose comme ça xxx


0 commentaires

0
votes

Fonction qui crée tous les répertoires (dossiers) du chemin donné. Pas besoin d'écrire du code crée chaque répertoire (dossiers) du chemin donné. Il créera tous les répertoires (dossiers).

J'aime: Si vous souhaitez créer une structure de répertoire comme

Organisations / 1 / Utilisateurs / 1 /

Vous devez donc appeler cette fonction avec des répertoires. $ répertoires_Path = 'Organisations / 1 / Utilisateurs / 1 /';

CreateUploadDirectories ($ répertoires_Path); xxx


0 commentaires

0
votes

Vous obtiendrez cette erreur si vous faites une erreur idiote que je l'ai fait et transmettez une chaîne plutôt que le littéral numérique pour le mode.

mkdir( $path, "0777", true ); // BAD - only creates /a/b

mkdir( $path, 0777, true ); // GOOD - creates /a/b/c/d


0 commentaires