とあるセクシーなデータ分析官

を目指す渋谷で働くソーシャルゲーム分析者の卵

symfony日記24

複数の階層のディレクトリを作成する
symfonyとはあまり関係ありませんがPHPのmkdirについてです。

image/generatedまでのディレクトリしかない状態で以下のファイルを作成したいと思います。
img/genareted/hoge/huga/humi/tem1.jpg


まずはmkdir

        mkdir(WWW_ROOT."/img/generated/hoge", 0777);
        mkdir(WWW_ROOT."/img/generated/hoge/huga", 0777);
        mkdir(WWW_ROOT."/img/generated/hoge/huga/humi", 0777);

ここで一つミスったことがあります。いつもの「chmod 777」の癖で
第2引数を「777」としてました。これやるととんでもないフォルダができるので注意><!



で、似たようなことを3回処理書くのはプログラマー精神としてよろしくないよね?とのことで再帰的に書きます。簡単です、第3因数を指定してあげるだけのようです。

        mkdir(WWW_ROOT."/img/generated/hoge/huga/humi", 0777, recursive);


これでimage/genareted/hoge/huga/humi/までのディレクトリが完成します。
そしたら最後にファイルを適当に作ってあげれば完了!

        if (!$fp = fopen(WWW_ROOT."/img/generated/hoge/huga/humi/tem1.jpg", "wb", true)) {
            echo "false";
            return;
        }
        fwrite($fp, "てすてす"]);
        fclose($fp);
        echo "true";
        return;

こんな感じでイイ感じにファイルを作れば完了です!


ちなみにfopen(WWW_ROOT." 以下略
で使っているWWW_ROOTはCakePHPの定数なのでsymfonyの場合は
sfConfig('sf_web_dir')としてルートディレクトリを指定してあげます。



参考:http://jp.php.net/mkdir