次のコードを実行します。
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。アパッチ バージョン 2.2.15。
再帰オプションをtrueに設定するとmkdirが失敗するのはなぜですか?
アップデート! さて、フォルダーをクリアし、次の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、それが問題なら..