2010-05-19 2 views
3

Я пытаюсь создать некоторые каталоги, как это:Вопрос PHP mkdir!

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

создает первый каталог с 0777 разрешениями, но когда он создает второе использует 000, как это завивка, поэтому он не может создать третий.

Обходной путь это пожалуйста?

Thanks, Richard.

+0

вы пробовали их создания каталогов один за раз? –

+0

Простите мое невежество, но для чего нужен символ @? также скрипт работал для меня ... возможно, что-то еще происходит. – Jukebox

+0

тоже не работает. просто попробовал. Создает первое, но происходит одно и то же на втором и третьем. – richardalberto

ответ

1

Это решало вопрос:

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

но почему не может использовать рекурсивный на MKDIR?

0

дорогой, это связано с правами пользователя, пожалуйста, проверьте пользователя, когда вы создаете любой реж с помощью функции MKDIR,

+0

, но он создает первое, почему бы и нет? – richardalberto

+0

r u создание поддиректоров в пределах первого созданного каталога ?? – Chirag

0

Вы пробовали chmod ИНГ каталоги?

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

Да, что-то вроде этого только что нашел проблему ... но не совсем так ... – richardalberto

1

Я сделал это, и она отлично работает:

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++; 
     } 
    } 

Так все, что вам нужно сделать, это определить свой путь ($ путь = фото/$ кошка/$ ы)