72

次のコマンドで PHP を使用して、サーバー上にディレクトリを作成しようとしています。

mkdir("test", 0777);

ただし、完全な権限は付与されません。次の権限のみが付与されます。

rwxr-xr-x
4

6 に答える 6

173

umaskこの場合、モードは現在のによって変更されます022

動作の仕方はumask減法混色です。に与えられた最初の許可を取得しmkdir、を差し引いて実際の許可umaskを取得します。

  0777
- 0022
======
  0755 = rwxr-xr-x.

これを望まない場合umaskは、効果がないように一時的にゼロに設定する必要があります。これは、次のスニペットを使用して実行できます。

$oldmask = umask(0);
mkdir("test", 0777);
umask($oldmask);

最初の行はumask、前の行をに格納している間、をゼロに変更し$oldmaskます。2行目は、目的のアクセス許可と(現在は無関係)を使用してディレクトリを作成しますumask。3行目は、を元の状態に復元しumaskます。

詳細については、 umaskおよびmkdirのPHPドキュメントを参照してください。

于 2010-10-22T14:15:06.437 に答える
14

ファイルとディレクトリの作成は、umaskの設定の影響を受けます。次のようにumaskを操作することにより、特定の権限セットを持つファイルを作成できます:-

$old = umask(0);
mkdir("test", 0777);
umask($old);
于 2010-10-22T14:15:55.017 に答える
2

おそらく、あなたのumaskはそれらを除外するように設定されています

于 2010-10-22T14:15:07.163 に答える