首页 文章

为什么mkdir失败并且递归选项设置为true?

提问于
浏览
10

我运行以下代码:

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

我对用户apache正在运行的目录mnt拥有完全权限:

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

PHP版本 - PHP 5.3.3 . Apache 2.2.15版 .

任何想法,为什么mkdir失败,递归选项设置为true?

Update! 我清除了文件夹,制作了以下php脚本并再次运行:

<?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的内容:

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有什么问题?我还是没有想法..

Update! 进一步的调查显示,这样的事情发生是因为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工作!

Update! 由于 femtoRgon 假定为mkdir,当从文件夹 mnt 中的脚本运行时,可以正常工作和非递归工作 . 但是当我从/ home / bitrix / www运行时,我仍然无法弄清楚,为什么它会失败?我甚至试过安装选项 file_mode=0775,dir_mode=0775 - 没有运气 . 我的操作系统= CentOS 6.3,如果重要的话......

3 回答

  • 2

    您可以尝试在第一个参数中附加斜杠字符 .

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

    这是创建目录的正确方法:

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

    所以你的错误可能是在一些缺失的行上 . 不是你创建目录的方式 .

    有关详细信息,请访问此处:http://php.net/manual/en/function.mkdir.php

  • 0

    经过一些谷歌搜索,我在php.net找到了答案 . 这完全是关于 serverino mount选项 . 当我用 noserverino 挂载文件夹时,所有问题都消失了 . 无论如何,谢谢你们试图帮助!

相关问题