Подтвердить что ты не робот

Почему mkdir терпит неудачу, если рекурсивная опция установлена ​​true?

Я запускаю следующий код:

mkdir('mnt/1',0777,true);
mkdir('mnt/a',0777);

Создана директория "a", в то время как каталог "1" не указан, страница печатает предупреждение.

Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 3

У меня есть полные разрешения для каталога mnt для пользователя apache:

drwxr-xr-x 1 bitrix bitrix   4096 Nov 28 10:10 mnt

PHP-версия - PHP 5.3.3. Версия Apache 2.2.15.

Любые идеи, почему mkdir терпит неудачу с рекурсивным вариантом, установленным в true?

Обновление Ну, я очистил папку, сделал следующий php- script и снова запустил ее:

<?php
        error_reporting(E_ALL);
        mkdir('mnt/1',0777,true);
        mkdir('mnt/2/',0777,true);
        mkdir('./mnt/3',0777,true);
        mkdir('./mnt/4/',0777,true);

        mkdir('mnt/a',0777);
        mkdir('mnt/b/',0777);
        mkdir('./mnt/c',0777);
        mkdir('./mnt/d/',0777);
?>

Вот результат:

Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 3 
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 4 
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 5 
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 6

Вот содержимое папки mnt после выполнения script:

drwxr-xr-x  1 bitrix bitrix  4096 Nov 28  2012 .
drwxrwx--- 11 bitrix bitrix 12288 Nov 28 11:10 ..
drwxr-xr-x  1 bitrix bitrix     0 Nov 28  2012 a
drwxr-xr-x  1 bitrix bitrix     0 Nov 28  2012 b
drwxr-xr-x  1 bitrix bitrix     0 Nov 28  2012 c
drwxr-xr-x  1 bitrix bitrix     0 Nov 28  2012 d

Я также пробовал абсолютный путь для рекурсивного mkdir - до сих пор не повезло, в то время как нерекурсивный mkdir отлично работает независимо от того, как устанавливается путь. Что не так с рекурсивным mkdir? У меня до сих пор нет идей.

Обновить! Дальнейшее исследование показало, что такие вещи происходят, потому что mnt - это папка, установленная командой

mount -t cifs -o username=***user***,password=***password***,uid=bitrix,gid=bitrix,iocharset=utf8,codepage=866 //192.168.1.6/folder /home/bitrix/www/mnt

Во всех других каталогах рекурсивный mkdir отлично работает, тогда как в этом каталоге работает только нерекурсивный mkdir!

Обновить! В качестве femtoRgon предполагается mkdir, при запуске из script в папке mnt отлично работает как рекурсивный, так и нерекурсивный. Но все-таки я не могу понять, почему это не удается, когда вы бежите из /home/bitrix/www? Я даже попытался установить с опциями file_mode=0775,dir_mode=0775 - не повезло. Моя ОС = CentOS 6.3, если это имеет значение.

4b9b3361

Ответ 1

После некоторых поисковых запросов я нашел ответ на php.net. Это все о опции serverino mount. Когда я установил папку с noserverino, все проблемы исчезли. В любом случае спасибо, ребята за tring, чтобы помочь!

Ответ 2

Вы можете попробовать добавить символ косой черты в свой первый параметр.

mkdir('./mnt/1/',0777,true);

Ответ 3

Это правильные способы создания каталога:

mkdir('/test1/test2', 0777, true);

mkdir("test1/test2",0777,true);

Таким образом, ваша ошибка, вероятно, связана с некоторыми недостающими строками. Не так, как вы создаете каталоги.

Подробнее об этом вы можете узнать здесь: http://php.net/manual/en/function.mkdir.php