次のコマンドで PHP を使用して、サーバー上にディレクトリを作成しようとしています。
mkdir("test", 0777);
ただし、完全な権限は付与されません。次の権限のみが付与されます。
rwxr-xr-x
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ドキュメントを参照してください。
ファイルとディレクトリの作成は、umaskの設定の影響を受けます。次のようにumaskを操作することにより、特定の権限セットを持つファイルを作成できます:-
$old = umask(0);
mkdir("test", 0777);
umask($old);
おそらく、あなたのumaskはそれらを除外するように設定されています