とならない理由
umaskの設定
PHPの mkdir() でディレクトリ(フォルダ)を作成した場合、パーミッションは(サーバの設定によりますが)大体 0755、ファイルの場合は 0644 となると思います。(最初の0は8進数表記によるもの)
これは LINUX など UNIX系のサーバの場合に umask (ユーマスク)という設定がなされているため。
ターミナル等で umask と打つと設定されている値が表示されるのですが、大体「0022」となっていることが多く、
1
2
|
$dir = ‘aaa’;
mkdir($dir, 0777);
|
上記のような mkdir() を実行しても 0022 でマスク(引き算)され 0755 となってしまう、というものです。
概念図はこんな感じ。
0777 ←permission値
-0022 ←umask値
—–
0755 ←結果値
0777のディレクトリを作る
ではどうやったら 0777 のディレクトリが出来上がるのか。
元々の umask 値を変えてしまっても良いのですが、それはそれで不都合が出るやも知れないので、もうちょっと穏やかで簡単な方法をとってみたいと思います。
1
2
3
|
$dir = ‘aaa’;
mkdir($dir, 0777); // ←値は何でも良い
chmod($dir, 0777); // ←パーミッション変更
|
ディレクトリを作ったあとに、chmod() するだけで出来上がってしまいます。
長々と説明した割には、簡単ですね。