Be an Engineer.

社会人からWEBエンジニアになった人間の備忘録的勉強記録

FuelPHPの導入(完全版)

前回のFuelPHPの導入時にcssが権限周りでエラって表示されないという出来事があったが、その不具合を解消できたので、再度「完全版」ということで記事を書く。

PHPの環境構築は過去の記事を参照
Homebrewでnginx + php-fpmのphp実行環境構築

この環境構築の後にPHPのWAF(Web Application Framework)であるFuelPHPの導入をした時のメモ。
FuelPHPの紹介は他に譲るとして、今回はその導入に焦点を当てて書く。
対象はMacOSなのでご注意を。(Linuxについてはある程度共通しているはずだが、試していないので守備範囲外ということで。)

参考記事

FuelPHP 1.7 Documentation

oilコマンドのインストール

FuelPHPのパッケージコマンドであるoilコマンドをまずインストールする。
(oilコマンドの詳細はこちら

$ curl get.fuelphp.com/oil | sh

これでoilコマンドが使用可能な状態となる。

FuelPHPによる新規プロジェクトの作成

プロジェクトを置きたい任意のディレクトリで以下を実行。

$ oil create [プロジェクト名]

しばらく待つと、カレントディレクトリに指定したプロジェクト名のディレクトリが作成される。
その後、nginxに書き込み権限を与えるため、そしてComposerにより定義された依存ライブラリを取得するために以下のコマンドを実行。

$ cd /path/to/[プロジェクト名]
$ oil refine install
$ php composer.phar update

※ちなみにFuelPHPプロジェクトを作成するこの他の方法として、以下の2つがあるが割愛。
1. zipファイルをダウンロードしてくる
2. GitHubからクローンする

nginxの設定

ブラウザから見られるようにするためにnginxの設定を変更する。

※ただし今回は要求として「(FuelPHPとは関係が無い)phpスクリプトを実行するディレクトリ」と「FuelPHPの練習用ディレクトリ」の2つを分けたいと思っていたので、FuelPHP用のlocationを用意した。
※エラーログは現状共存する形になっているが、そこはお好きにどうぞ。

http {
    ...

    include mime.types;
    default_type application/octet-stream;

    server {
        listen 80;

        # 前回の記事
        root /path/to/your_document_root/; # ドキュメントルート
        server_name localhost;
        charset utf-8;
        index index.php index.html index.htm; # /で終わった時にアクセスするファイル

        # 前回の記事
        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        # FuelPHP用(「fuelphp_sample」というプロジェクト名の場合)
        location /fuelphp_sample/public/ {
            try_files $uri /fuelphp_sample/public/index.php?$uri&$args;
        }
   
        location /fuelphp_sample/public/\favicon.ico {
            empty_gif;
            access_log off;
            log_not_found off;
        }

        location ~ /fuelphp_sample/public/assets/(.+) {
            autoindex on;
            alias /path/to/your_document_root/fuelphp_sample/public/assets/$1;
        }

        location ~ /fuelphp_sample/public/\.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }
}

nginxを再起動した後にブラウザでhttp://localhost/fuelphp_sample/public/にアクセス。
前回はここでcssが403でエラーが出ていて、cssが当たっていない画面が表示された。

しかし、同僚に教えてもらったところこんな記事が。。 ほとラボ - Nginxでつくる、どシンプルな静的コンテンツサーバ

…ドキュメントルートまでのとあるディレクトリの"."に確かにOtherに実行権限が無かったあああ!!

そんなわけで実行権限を与える。

$ chmod o+x 対象ディレクトリ

すると治って下のページが表示された!(∩´∀`)∩ワーイ

f:id:shirakiya:20140721174527p:plain

ってことで同じように403でassets系のファイルにアクセスできない場合は、ディレクトリの実行権限に要注意で!

以上の流れをまとめると、

  • PHPの実行環境を作る
  • Nginxでプロキシサーバーを立てる(PHPサーバーでも可)
  • FuelPHPのアプリケーションを構築

FuelPHPの導入完了!