Création d'un répertoire en PHP

Résolu
Bonjour,

Pour créer un répertoire j'utilise la fonction mkdir

if(mkdir ("/home/sam/mondossier"))
{
echo"ça marche!!!!";
}
else
{
echo"marche pas";
}

mais la crétion ne se fait pas. Pourquoi?
Je pense qu'il s'agit d'une histoire de serveur avec les droit mais je vois pas comment y remédier. Un dossier temporaire?

Merci

23 réponses

Résumé de la discussion

Le problème central est que la création d'un répertoire via PHP avec mkdir('/home/sam/mondossier') ne s'effectue pas, probablement à cause des droits d'écriture de l'utilisateur exécutant le serveur. Des solutions proposées incluent l'usage de mkdir avec récursivité et suppression d'erreurs (@mkdir('/home/sam/mondossier', 0777, true)), et la vérification des droits d'écriture sous Linux pour ajuster le chemin et le contexte. D'autres conseils consistent à créer d'abord les répertoires parents étape par étape ou à tester des chemins relatifs lorsque le chemin absolu déclenche des erreurs d'accès. En complément, certains évoquent les risques de sécurité liés à l'utilisation de permissions élevées comme 0777 et recommandent d'évaluer les droits réels et la configuration du serveur avant d'adopter ces méthodes.

Bobot (l’IA à votre service)
  1. Bonjour,

    suivant https://www.php.net/manual/fr/function.mkdir.php

    Depuis PHP5,
    Les répertoires peut être créer avec

    if(@mkdir ("sam/mondossier",0777,true)

    true pour la création de répertoire de façon récursif.

    Attention toutes fois, si le droit utilisateur (instance apache) n'a pas les droits d'ecriture, la creation de répertoire ne pourra pas s'effectuer..
    notamment sous linux, par example pour le répertoire /home ..etc...

    PS: je sais que ce post date, mais je penses au nombreux utilisateurs qui tombe sur ce post ( via Google par ex)
    1. hi, mon post qui me sert de nouveaux (merci google)
    2. Merci pour cà ;)
    3. Merci encore pour cette contribution :)
  2. salut:
    je crois que tu n'a pas ajoute le mode qudoit être en octal
    1. c koi ton herbergeur?
      1. t'es shf depuis 2004 ou tu en as trouvé ; moi je suis libre !
    2. essaye ça :

      if(@mkdir ("/home/sam/mondossier")) { 
      	echo"ça marche!!!!"; 
      } else {
      	echo"marche pas"; 
      }
      
      1. merci aussi !
    3. j'ai oublié de préciser que l'on ne peut créer qu'un seul répertoire à la fois d'abord le "home" puis le "sam" puis le "monDossier"
      donc ça donne :
      mkdir("home");
      mkdir("home/sam");
      mkdir("home/sam/monDossier");
      1. on peut créer des répertoires de façon récursif. voir ma réponse un peu plus bas.
    4. Modérateur
      e lundi 12 janvier 2004 à 11:35:16

      tu crois que cela sert de répondre encore depuis le temps ???
      1. yesss moi zaussi
        1. Utile à moi aussi ! même après ces années, content de voir l'évolution de ce post, car php évolue, le savais tu ? Et oui, les visiteurs viennent sur les anciens posts... +1 pour toi
        2. avril 2011 toujours utile :D
        3. je passait par la et pis la commande a jamais changer ben ben lol! :P
      2. cliquez sur le plus du/des message(s) qui vous ont été util(s). ;)
        1. Pareil pour moi merci beacoup!!
        2. Modérateur
          oui mais pas sur cette réponse .... !
      3. janvier 2010..., et ce post m'a été utile !
        Supposer qu'une réponse 5 ans après n'est pas utile suppose un bien grand savoir et une bien petite envie de partager.
        Mais pour ceux la, je propose la création d'un filtre tout bête : ne voir que les réponses de moins de 3 heures.
        Ca fait un peu "Pôle-emploi" mais chacun son truc... Y a plus qu'à étendre le principe et supprimer l'histoire et la géographie en terminale...
        • 1
        • 2