SPICY SPACE BLOG

愛犬家WEBエンジニアの日常。

HerokuがPHPに正式対応したのでFuelPHP動かしてみた

これまでHerokuでPHPの設定をいじるにはbuildpackという仕組みを使っていましたが、必要なくなりました。

操作手順を一通りメモ。

  

環境構築手順

1.fuelphpのプロジェクト作成

oil create [プロジェクト名]

 

2.gitで管理するために

不要なものを削除

rm -rf .git .gitmodules *.md docs fuel/core fuel/packages

削除したコアファイルをサブモジュールとして追加

git submodule add git://github.com/fuel/core.git fuel/core
git submodule add git://github.com/fuel/oil.git fuel/packages/oil
git submodule add git://github.com/fuel/auth.git fuel/packages/auth
git submodule add git://github.com/fuel/parser.git fuel/packages/parser
git submodule add git://github.com/fuel/orm.git fuel/packages/orm
git submodule add git://github.com/fuel/email.git fuel/packages/email

 

3. .gitignoreを編集

/composer.lockの行を削除

これをしないとherokuにpushしたときに、次のエラーが出てしまいます。

Your composer.json specifies dependencies, but no composer.lock was found, please check it into your repository along with composer.json!

 

4.Procfileの作成

ルートにファイル名Procfileを作成。apacheかNginXかと、Document Rootが指定できます。

web: vendor/bin/heroku-php-apache2 public/

参考:https://devcenter.heroku.com/articles/custom-php-settings#setting-the-document-root

 

5.composer.json

ルートにこのファイルがあれば、herokuがPHPを使用すると判断します。

mbstringなどの拡張もここで指定できます。

FuelPHPのプロジェクトには最初からルートにcomposer.jsonが配置されているので、そのまま使用します。

ここでハマってしまったのですが、push時にはエラーにならないのですが、webからアクセスをするとApplication Errorで何も表示されませんでした。

heroku logsでログを確認するとbash: vendor/bin/heroku-php-apache2: No such file or directoryとエラーが出ており、herokuのプロセス自体が起動していませんでした。

Procfileを使用する場合はそのままでは動かずcomposer.jsonを書き換える必要がありました。

公式のドキュメントをよく読むとvendor/binのパスはheroku側でComposerにて設定されているそうで、composer.jsonにconfigの項があると、これが上書きされてしまうみたいです。(Symfonyとかも同じ現象になるみたい)

下記のbin-dirの設定を追記することで解決!

"config": {
"bin-dir": "vendor/bin",
"vendor-dir": "fuel/vendor"
},

参考:https://devcenter.heroku.com/articles/php-support

 

6.herokuにcommit & push

heroku openでfuelPHPのスタートページが表示されれば完了!

 

まとめ

今回は超時間がかかってしまいましたが、次回からはさくっとfuelPHPの環境が構築できそうです。

 

参考サイト

http://kayakuguri.github.io/blog/2014/06/11/heroku-php/

http://qiita.com/L_e_k_o/items/956bd92645769dece5e7

 

関連する記事


FuelPHPプロジェクト作成してHerokuで公開するシェルを作りました。 - SPICY SPACE BLOG