2010-05-19 6 views
3

Je tente de créer des dirs comme celui-ci:Problème PHP mkdir!

@mkdir("photos/$cat/$sku", 0777, true) 

il crée le premier répertoire avec les permissions 0777, mais quand il crée le second est utilise 000 comme il est perms, il ne parvient pas à créer le troisième.

Une solution de contournement s'il vous plaît?

Merci, Richard.

+0

Avez-vous essayé de les créer des répertoires un à la fois? –

+0

pardon mon ignorance, mais à quoi sert le symbole @? aussi, le script a fonctionné pour moi ... peut-être que quelque chose d'autre se prépare. – Jukebox

+0

ne fonctionne pas non plus. juste essayé. Crée le premier mais arrive le même sur la deuxième et la troisième. – richardalberto

Répondre

1

Cette résolu la question:

$a = @mkdir("photos/$cat/", 0777); 
    @chmod("photos/$cat/", 0777); 
    $b = @mkdir("photos/$cat/$sku/", 0777); 
    @chmod("photos/$cat/$sku/", 0777); 

mais pourquoi ne peut pas utiliser récursive sur mkdir?

0

chère est due aux droits de l'utilisateur, s'il vous plaît vérifier l'utilisateur lorsque vous créez le tout en utilisant la fonction dir mkdir,

+0

mais il crée le premier, pourquoi pas le reste? – richardalberto

+0

ue créer le sous-répertoire dans le premier répertoire créé ?? – Chirag

0

Avez-vous essayé chmod ing les répertoires?

mkdir("photos/$cat", 0777, true); 
chmod("photos", 0777); 
chmod("photos/$cat", 0777); 
mkdir("photos/$cat/$sku", 0777); 
chmod("photos/$cat/$sku", 0777); 
+0

Oui, quelque chose comme ça vient de trouver le problème ... mais pas exactement comme ça ... – richardalberto

1

Je l'ai fait et il fonctionne parfaitement:

if (!is_dir($path)) { 
     $dirs = explode('/', $path); 
     $i = 0; 
     $subdir = ''; 
     foreach ($dirs as $dir) { 
      if($i > 0){$dir = '/' . $dir;} 
      $subdir .= $dir; 
      if(!is_dir(DIR_CACHE . $subdir)){@mkdir(DIR_CACHE . $subdir);@chmod(DIR_CACHE . $subdir, 0777);} 

      $i++; 
     } 
    } 

Donc, tout ce que vous avez à faire est de définir votre chemin ($ path = photos/$ cat/$ sku)