我運行下面的代碼:爲什麼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,如果它很重要的話。
你已經在'mnt'有一個目錄'1'嗎? – Arjan
編號在執行腳本之前,不存在「a」和「1」目錄 –
「a」目錄創建後的所有者/組和權限是什麼? 另一個想法是,遞歸調用*可能會試圖更改'mnt'dir的權限,這是apache用戶不擁有的權限。 – mkilmanas