tetu式

ゲームと音楽・作曲の自己満足と悩みどころの多いプログラムのブログ。

fuelPHP1.6奮闘記

少し前まで素PHPmysqlを使ったログイン認証を作っていたのですがfuelPHPというフレームワークを使うことになりました。

理由としては使った方が効率がいいとかセキュリティとか・・・

セキュリティについてはどのようにしたらセキュリティが強いのかという判断が全然できないので後で考えます。

基本的には見られちゃいけないものを見せないようにすることだとは思うのですが・・・

 

で、今回えらい苦労したfuelPHPの設定やファイルの置き方などなど。

あとはEclipseにプロジェクトとして読み込めるようにしたところとか。(こちらは別記事で書き上げます)

 

 

とりあえずfuelPHPのインストールから

インストールというかfuelPHPを使うためのフォルダ構成作りと言いますか。かなり簡単でoilというコマンドを使うと現在地にfuelPHPのプロジェクトを作ってくれます。

リモート接続してubuntu serverの方にアクセスして、

  1. curl get.fuelphp.com/oil | sh
  2. cd /home/dev_web
  3. oil create my_project

3行だけでプロジェクト作ってくれます。早いですね。

1.はoilを使えるようにするためのダウンロードやインストール系のコマンドなので次回以降は2.からでいいはず。

2.はoilしたい場所に移動しているコマンドですか後述するドキュメントルート以外の場所ならどこでもいいと思います。自分が分かりやすい位置にしましょう。mkdirで新しく作ってもいいかもです。今回は開発用ということでdevなんか付けたりしてます。

途中で何かエラーが出た場合は3.の文頭に sudo を入れてみるといいかもです。自分のところの場合は赤い網掛のエラーが出たので視覚的にかなり分かりやすく失敗してるな、と判断。sudo を入れて再度トライしてみると途中の成功した部分は「既にやってあるよ!」的な英文が出てちゃんとできてないところからやってくれます。

 

my_projectの中身とドキュメントルート

作られたmy_projectの中にいくつかのファイルとフォルダが入ってます。

my_projectに移動して ls コマンドを実行すると

 

CHANGELOG.md     README.md   composer.json  composer.phar  fuel  public
CONTRIBUTING.md  TESTING.md  composer.lock  docs           oil

7つのテキストファイル(黒)、1つの実行ファイル()、3つのフォルダ()があります。

その中のpublicフォルダ。これがfuelPHPをwebサーバで使うために最初にアクセスしたい場所、いわゆるドキュメントルートになります。中を見るとindex.phpとassetsフォルダが入ってます。

じゃあ最初からドキュメントルート上でoil実行すれば良かったのでは?と思うかも知れませんがどうやらそれだとセキュリティ上よろしくないとのこと。

この辺はfuelPHPのドキュメントにも書かれてたりします。 http://press.nekoget.com/fuelphp_doc/installation/instructions.html 手動でインストールの3.あたりです。

 

じゃあpublicの中身だけ今のドキュメントルートに持っていこう、というのもあるのですがこれだとpublicの中にあったindex.phpの中身を書き換える必要が出てきます。

/**
 * Path to the application directory.
 */
define('APPPATH', realpath(__DIR__.'/../fuel/app/').DIRECTORY_SEPARATOR);

/**
 * Path to the default packages directory.
 */
define('PKGPATH', realpath(__DIR__.'/../fuel/packages/').DIRECTORY_SEPARATOR);

/**
 * The path to the framework core.
 */
define('COREPATH', realpath(__DIR__.'/../fuel/core/').DIRECTORY_SEPARATOR);

具体的にはこの辺り。viコマンドで開いてちょっと下くらいにあります。

途中の赤字で書かれたパスがfuelPHPでページ表示するために必要なパスになっています。

このパスの内容はindex.phpの位置から見て /fuel/app/ はどこにあるのかという見方になるのですが、仮にドキュメントルートが /var/www/html とすると、

 

/../../../home/dev_web/my_project/fuel/app/

 

こう直すことになります。割と長いですし、ドキュメントルート外のサーバに入ってるフォルダの名前とかも見える書き方になってあまりよろしくない感じです。しかも packages も core も同じように書かなくてはならないです。

とは言ってもこれはかなり極端な例なので/home/dev_web/my_projectoil createするくらいならドキュメントルートの一つ上の階層でやってpublicの中身を移した方がいいですね。それなら

 

/../../fuel/app/

 

で済みます。

しかし、自分はまだ未熟なのでどうかはよく分かりませんがドキュメントルートのすぐ近くなのでまだ何となく不安・・・というのがあります。できればもう根元のフォルダごと違う場所っていうのがやっぱり安心です。あとせっかく一塊でプロジェクトができてるのでできれば作ったままにしておきたい。

 

そこで使うのがWindowsで言うショートカットエイリアスとかシンボリックリンクとも。

  1. cd /var/www/html
  2. ln -s /home/dev_web/test/my_project/public

まずは cd コマンドでドキュメントルートに移動します。そこでpublicフォルダまでのシンボリックリンクを作成します。

これだけで終わりです。index.phpの中を編集することもpublicフォルダの中身を移動することもしません。

ちょっとだけ手間なのがブラウザで確認するためにアドレス末尾に/public/を入れることくらいです。

 

おそらくこの段階で サーバのDNS名/public/ とブラウザのアドレス欄に入力するとWelcome!というfuelPHPの初期画面が出てくると思います。