tôi chạy đoạn mã sau:Tại sao mkdir không thành công với tùy chọn đệ quy được đặt đúng?
mkdir('mnt/1',0777,true);
mkdir('mnt/a',0777);
mục "a" được tạo ra, trong khi thư mục "1" không phải là, bản in trang cảnh báo.
Warning: mkdir(): File exists in /home/bitrix/www/php_test.php on line 3
tôi có quyền đầy đủ về mnt thư mục cho người dùng apache đang chạy: phiên bản
drwxr-xr-x 1 bitrix bitrix 4096 Nov 28 10:10 mnt
PHP - PHP 5.3.3. Apache phiên bản 2.2.15.
Bất kỳ ý tưởng nào, tại sao mkdir không thành công với tùy chọn đệ quy được đặt thành true?
Cập nhật! Vâng, tôi xóa các thư mục, làm cho php-kịch bản sau đây và chạy nó một lần nữa:
<?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);
?>
Đây là kết quả:
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
Dưới đây là nội dung của mnt thư mục sau khi thực hiện kịch bản:
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
tôi cũng đã cố gắng đường dẫn tuyệt đối cho mkdir đệ quy - vẫn không có may mắn, trong khi mkdir không đệ quy hoạt động tốt bất kể có bao con đường được thiết lập. Có gì sai với đệ quy mkdir? Tôi vẫn không có ý tưởng ..
Cập nhật! Tiếp tục điều tra tiết lộ rằng những việc như vậy xảy ra vì mnt là một thư mục, gắn kết bởi lệnh
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
Trong tất cả các thư mục khác mkdir đệ quy hoạt động tốt, trong khi trong thư mục đó công trình mkdir chỉ không đệ quy!
Cập nhật! Là femtoRgon giả định mkdir, khi chạy từ tập lệnh trong thư mục mnt
, hoạt động tốt cả đệ quy và không đệ quy. Nhưng tôi vẫn không thể tìm ra, tại sao nó không thành công, khi chạy từ/home/bitrix/www? Tôi thậm chí đã thử gắn kết với các tùy chọn file_mode=0775,dir_mode=0775
- không may mắn. Hệ điều hành của tôi = CentOS 6.3, nếu nó quan trọng ..
Bạn đã có thư mục '1' trong' mnt' chưa? – Arjan
Không. Cả thư mục 'a' lẫn '1' đều tồn tại trước khi thực thi tập lệnh –
Chủ sở hữu/nhóm và quyền của thư mục 'a' khi nó được tạo ra là gì? Một ý tưởng khác là cuộc gọi đệ quy * có thể * đang cố thay đổi quyền của thư mục 'mnt' mà người dùng apache không sở hữu. – mkilmanas