まえおき
herokuを使いたいなーと思って調べています。
herokuにデプロイするときに、 build-pack
というものを使用します。
これは、デプロイされるアプリケーションの言語などを自動で推定してくれるやつです。これを設定しないとデプロイできません。
我々はphperなので、 heroku/php
というものを使うのですが、公式ドキュメントにあるように、トップディレクトリに composer.json
または index.php
が必要になります。
Heroku PHP Support will be applied to applications only when the application has a file named composer.json in the root directory. Even if an application has no Composer dependencies, it must include an empty composer.json in order to be recognized as a PHP application.
が、僕はルートディレクトリは
という構成でやってるので、ルートディレクトリに composer.json
がなくてデプロイできませんでした。
個人的にこの構成は気に入っているし、わざわざデプロイのためにディレクトリ構成を変更するのもおかしな話です。
解決策
調べてみると、subdir-heroku-buildpackというものを使うと、サブディレクトリのみをデプロイできるようです。
herokuの設定値に PROJECT_PATH
という変数を設定し、このbuild-packを heroku/php
の前にかましてあげるだけでデプロイできるようになります。
余談
上記のように簡単に設定できるはずだったのですが、私はかなりつまづきました。
というのも、 PROJECT_PATH
を設定してるにもかかわらず、 PROJECT_PATH is undefined
と怒られるんです。
結局のところ、pushしているブランチが違っていて、 PROJECT_PATH
で指定しているディレクトリが見つからないのが原因でした。
エラーメッセージと原因が違うってどうなのよ??となったので、Forkして、ちゃんとエラーメッセージが出る版を作りました。
よければ使ってやってください。