我运行以下代码:
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?
更新! 好吧,我清除了文件夹,制作了以下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有什么问题?我还是没有想法..
更新!进一步调查显示发生此类事情是因为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,从文件夹mnt
中的脚本运行时,可以正常工作和非递归工作。但是当我从/ home / bitrix / www运行时,我仍然无法弄清楚,为什么它会失败?我甚至尝试使用选项file_mode=0775,dir_mode=0775
进行安装 - 没有运气。我的OS = CentOS 6.3,如果重要的话......
答案 0 :(得分:2)
经过一些谷歌搜索,我在php.net找到答案。这完全是关于serverino
挂载选项。当我用noserverino
挂载文件夹时,所有问题都消失了。无论如何,谢谢你们帮助我们!
答案 1 :(得分:0)
您可以尝试在第一个参数上添加斜杠字符。
mkdir('./mnt/1/',0777,true);
答案 2 :(得分:0)
这是创建目录的正确方法:
mkdir('/test1/test2', 0777, true);
mkdir("test1/test2",0777,true);
所以你的错误可能是在一些缺失的行上。不是你创建目录的方式。
有关详情,请点击此处查看:http://php.net/manual/en/function.mkdir.php