2011-06-20 13 views
1

私はPHPのmkdir関数を使用していますが、$ modeパラメータでいくつかの問題があります。パラメータを指定しないと、新しいディレクトリのデフォルトのパーミッション設定としてUNIX 755が取得されます。私はUNIX 777なるためのアクセス許可を設定したいと思いますので、あなたはここで見るように私はそれをやった:私はこれを行うとPHPを使って新しいディレクトリにChmodパーミッションを設定するには

$mode = '0700'; 
mkdir($newdir, $mode); 

フォルダが作成されますが、私はそれで何かを行うことはできません。実際に私はそれを削除することはできません!私ができることは、FTP経由で名前を変更することです。

次に$ mode = '0600'を設定しようとしました。これにより、実行可能なフォルダが作成されますが、アクセス権はUNIX 110に設定されます。これはどのように可能ですか? UNIXの値が600であってはなりませんか?私がここで欠けている変換がありますか?ありがとう。

+0

[PHPコードmkdir( 'images'、 '0777')の複製は411の権限を持つフォルダを作成します!なぜですか?](http://stackoverflow.com/questions/2251283/php-code-mkdirimages-0777-creates-a-folder-with-411-permissions-why) –

+0

フォルダーの作成時にフォルダーを所有しているフォルダーあなたはFTPを使っていますか? FTPとPHPのユーザーが一致しない場合、0700はアクセスを拒否します(Ignacioが捕らえた問題を修正したとしても) –

答えて

1

モードは文字列ではなく数字であると考えられています。代わりに$mode = 0700;を試してください。 php.netのマニュアルは、mkdir関数による

+0

これはうまくいきましたが、$ mode = 0777に設定しました。ファイルを実行すると、そのフォルダが取得するUNIXの同等値は0755に設定されます。私はまだその部分を理解できませんが、他の答えはumaskの問題であると言います。 – Presto

+0

はい、それはumaskの問題です。あなたは事実の後に最終値に権限を設定することができます。 –

0

は、この説明があります(ないここ

bool mkdir (string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]]) 

$モードでは整数(文字列ではありません)であり、それは8ベースのため、それが「0」で開始する必要があります10ベース)。

更新:(php.netから)あなたは、おそらくそれが先頭にゼロを持つべき意味進数、などのモードを指定したい注意。このモードは現在のumaskによっても変更されます。このumaskはumask()を使用して変更できます。あなたはそれが0777になるように設定したい場合は

+1

'0 'で始める必要はありませんが、省略すると値の読み書きに必要な計算量が増えます。 –

+0

私は知っていますが、Unixの "標準"パーミッションを使用したい場合は、 "0"で始める必要があります(コード内の755がファイルシステム内の755になるようにするか、 10ベースの数字を使用し、493(10)== 755(8))。 –

0

、これを試してください:ディレクトリのパーミッションは、umaskの組み合わせと何が指定されているように、よりumaskをお読み

oldumask = umask(0); 
mkdir('mydir', 0777); 
umask($oldumask); 

関連する問題