为什么mkdir在递归选项设置为true时失败?

编程入门 行业动态 更新时间:2024-10-25 03:33:28
本文介绍了为什么mkdir在递归选项设置为true时失败?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我运行以下代码:

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

目录"a"已创建,而目录"1"未创建,页面打印警告.

Directory "a" is created, while directory "1" is not, page prints warning.

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

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

I have full permissions on directory mnt for user apache is running:

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

PHP版本-PHP 5.3.3. Apache版本2.2.15.

PHP version - PHP 5.3.3. Apache version 2.2.15.

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

Any ideas, why mkdir fails with recursive option set to true?

更新! 好吧,我清除了文件夹,制作了以下php-script并再次运行:

Update! Well I cleared the folder, made the following php-script and ran it again:

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

Here is the content of the folder mnt after script execution:

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

I also tried absolute path for recursive mkdir - still no luck, while non-recursive mkdir works fine no matter how the path is set. What's wrong with recursive mkdir? I still have no ideas..

更新!进一步的调查显示,发生这种情况是因为mnt是一个由命令挂载的文件夹

Update! Further investigation revealed that such things happen because mnt is a folder, mounted by command

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可以正常工作!

In all other directories recursive mkdir works fine, while in that directory only non-recursive mkdir works!

更新!由于 femtoRgon 假定mkdir从文件夹mnt中的脚本运行时,可以递归和非递归正常工作.但是仍然不知道为什么从/home/bitrix/www运行时它失败了?我什至尝试用选项file_mode=0775,dir_mode=0775挂载-没运气.如果重要的话,我的操作系统= CentOS 6.3.

Update! As femtoRgon assumed mkdir, when run from script in the folder mnt, works fine both recursive and non-recursive. But still I can't figure out, why it fails, when run from /home/bitrix/www? I even tried mounting with options file_mode=0775,dir_mode=0775 - no luck. My OS = CentOS 6.3, if it matters..

推荐答案

经过一番谷歌搜索后,我在 php .这一切都与serverino挂载选项有关.当我用noserverino挂载文件夹时,所有问题都消失了.无论如何,感谢大家的帮助!

After some googling, I found the answer on php. It is all about serverino mount option. When I mounted folder with noserverino all problems were gone. Anyway thanks guys for trying to help!

更多推荐

为什么mkdir在递归选项设置为true时失败?

本文发布于:2023-11-24 21:24:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1626892.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:递归   设置为   选项   mkdir   true

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!