Почему невозможно создать этот каталог?

#php #linux

#php #linux

Вопрос:

Я хочу создать каталог в системе Linux. Родительский каталог, который будет содержать вновь созданный каталог, имеет разрешение 777. Проблема в том, что если новый каталог не включает подкаталог, то он создается успешно. Но когда он содержит подкаталог, например docs/photos , тогда подкаталог ( here /photos ) не создается! Итак, как создать подкаталог?

Вот коды :

     if (!file_exists($rep))
    {
        if (mkdir($rep))
        {
            move_uploaded_file($_FILES['upload_field']['tmp_name'] , $rep."/"."photo".$image_id.".png");
        }
    }
  

Комментарии:

1. согласитесь, если у вас есть строка типа doc / abc / xyz, тогда нам нужно создать каталог doc внутри этой abc внутри abc мы должны создать xyz.

Ответ №1:

В документации для mkdir указано, что существует $recursive параметр, который вы должны использовать для этого.

recursive

Позволяет создавать вложенные каталоги, указанные в имени пути. По умолчанию используется значение FALSE.

Прочитайте документацию для использования.

Комментарии:

1. file_exists Просматривает ли функция подкаталог?

2. Этот вопрос не имеет смысла. Если путь не существует, файл не может существовать. Если файл существует, то все компоненты его пути действительно существуют.

Ответ №2:

По умолчанию mkdir не создает рекурсивно подкаталоги. Если вы хотите такого поведения, вы должны добавить recursive параметр: mkdir($rep, 0777, true) .Подробнее см. Документ.

(Кстати, вам следует избегать разрешений 777, они очень часто вызывают проблемы с безопасностью.)

Ответ №3:

Есть третий параметр, который вы должны установить в TRUE, чтобы он работал. Этот параметр предназначен для рекурсивного. В противном случае PHP создаст только «корневой» каталог

http://de.php.net/mkdir