役に立つかもしれないBlogお問い合わせトップITIT技術・規格プログラミングPHPmkdirでディレクトリに「0777」が設定できない場合の解決法mkdirでディレクトリに「0777」が設定できない場合の解決法PHPプログラムを使用して誰でも読み書きできるディレクトリを作成したい場合に以下のようにmkdirコマンドとchmodコマンドを組み合わせて使用します。0777);2行目のmkdirコマンドで0777にならない理由として、umaskが「022」のように事前に設定されていることがあります。設定されていた場合は「0777」が「022」にマスクされてしまい、「0755」になってしまいます。↓この方向にマスクされます。←マスク値(022)によって最終的にこの値になる。そのため、次の行のchmod関数で明示的に0777に変更する必要があるわけです。このマスク値は作成される全てのディレクトリに適用されることを覚えておきましょう。umask値を調べるには、umask()を引数なしで実行し、返り値を見てみましょう。サブディレクトリを含めてmkdirすると...サブディレクトリまで含めて全てを0777に設定したい場合は少々複雑になります。いうのも、例えば作成したいディレクトリが「/2012/03/22/」のように複数の階層になっている場合を想定してみましょう。0777);このようにしても、chmodは「22」という末端のディレクトリにしか適用されないため、途中の「2012」や「03」ディレクトリはumaskのマスク値を通した「0755」が設定されてしまうのです。途中の「2012」「03」ディレクトリも含めて「0777」に設定したい場合は、umask関数を使ってマスクを一時的になくしてしまう方法が有効です。サーバでこの関数を使用することは避けてください。//マスク値をもとに戻すこうしてマスク値をなくしたわけですね。↓この方向にマスクされます。コメントをキャンセルメールアドレスが公開されることはありません。Webサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。田舎に生まれ育ち東京へ。技術はDTPデザインからプログラミングまで、インフラはCD-ROM全盛からクラウドサーバーまで、いろいろなビジネスを作り、関わってきました(知見を生かして専門学校の講師も3年ほど)。今ではAWSで月間100万PVを超えるサービスを制作・運営しながらさらなるノウハウを蓄積中。このサイトではビジネスをITコンサルタント視点で考え、感じた知見や経験が世の中のお役に立てば、という視点で無料記事として公開しています。最近は機械学習による仕事の効率化を研究中。reserved.代表者のライフハックブログ。