2012-11-28 113 views
10

我運行下面的代碼:爲什麼mkdir失敗並將遞歸選項設置爲true?

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

目錄「一」創建,而目錄「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腳本,並再次運行它:

<?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的作品!

更新! As femtoRgon假定mkdir,當從文件夾mnt中的腳本運行時,可以很好地遞歸和非遞歸。但是我仍然無法弄清楚,爲什麼它會失敗,從/ home/bitrix/www運行?我甚至嘗試用選項file_mode=0775,dir_mode=0775安裝 - 沒有運氣。我的OS = CentOS 6.3,如果它很重要的話。

+0

你已經在'mnt'有一個目錄'1'嗎? – Arjan

+0

編號在執行腳本之前,不存在「a」和「1」目錄 –

+0

「a」目錄創建後的所有者/組和權限是什麼? 另一個想法是,遞歸調用*可能會試圖更改'mnt'dir的權限,這是apache用戶不擁有的權限。 – mkilmanas

回答

2

一些谷歌上搜索我找到了答案上php.net後。這完全是關於serverino安裝選項。當我用noserverino掛載文件夾時,所有問題都消失了。無論如何,謝謝你們的幫助!

0

你可以嘗試在你的第一個參數上加一個斜槓字符。

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

這是創建目錄的正道:

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

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

所以你的錯誤可能是一些丟失的線條... ...而不是在您創建的目錄的方式。

有關詳細信息,你可以點擊這裏:http://php.net/manual/en/function.mkdir.php

相關問題