mkdir を使用して、ファイル構造用に通常 2 つのネストされたディレクトリを作成しています。作成されるディレクトリは常に 0755 に設定されます。しかし、私が使用しているコードはそうです。
mkdir('path_one/path_two', 0777, true);
私はやってみました
chmod('path_one/path_two', 0777);
mkdir が正しく機能しない原因は何ですか?
mkdir は正しく機能しています。作成される中間ディレクトリは、現在の umask に基づいて設定されます。次のようなものが必要です。
umask(0777);
mkdir('path_one/path_two', 0777, true);
PHPマニュアルから:
モードは、 umask()を使用して変更できる現在の umask によっても変更されます。
で設定されているビットは、 で使用される結果でumask()
は設定解除mkdir()
されることに注意してください。デフォルトの umask は 0022 で、mkdir のデフォルトの作成モードは 0777 で、結果の値は 0755 になります。これは、作成されたすべてのディレクトリに適用されます。