LoginSignup
33
32

More than 5 years have passed since last update.

Laravel5 を Heroku にデプロイ

Posted at

Laravel5 で新しいアプリケーションを作成

composerでインストールしたlaravelで blogという名前のアプリケーションを作る。

laravel new blog

早速Herokuにデプロイ!・・しようとしてこんなエラーで半日以上苦しんだ

heroku create
git push heroku master
heroku oepn

Herokuでもアプリを作って、push & openすると、素っ気ないエラーメッセージ・・

唯一の頼り、Herokuのログを見る

app[web.1]: bash: vendor/bin/heroku-php-apache2: No such file or directory

何故!!?

Procfileを追加してみる

apacheで動くように。。

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

エラー変わらず・・くそ〜〜

Heroku PHP getting startedをやる

諦めて公式のGetting Started with PHP on Heroku | Heroku Dev Centerをやる。

無事デプロイできる・・
違いを目視diffで頑張って探す。。

composer.jsonに追記

"heroku/heroku-buildpack-php"が足りないことに気づく。
追加。

composer.json
"require-dev": {
    "phpunit/phpunit": "~4.0",
    "phpspec/phpspec": "~2.1",
    "heroku/heroku-buildpack-php": "*"
},

まだだめ。。

Herokuのデプロイ時のログを見てみようと気づく

実行時ログだけじゃなくて、デプロイ時のログを見てみた。

remote: Compressing source files... done.        
remote: Building source:        
remote: 
remote: -----> Node.js app detected        
remote: -----> Resetting git environment 

Node.js??

なぜかNode.jsのアプリ認識されているらしい・・
そしてcomposerの追加ライブラリのロードとかもされず、heroku-buildpack-phpで入ってくる、heroku-php-apache2とかがインストールされていない状態だったらしい。

解決

Heroku doesn't recognize my Laravel app as PHP app, and does not do composer install - Stack Overflow

↑の通り。

heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-php

環境変数を設定せよ。とのことでした。
こうするとNode.jsじゃなくてPHPだと気づいてもらえるらしい・・・

番外

HerokuでPHPだと認識してもらうには・・

Heroku上でPHPである、と認識されるためには、アプリケーションルートに composer.jsonが必要らしい。
そのためcomposet使わないPHPアプリでも、空のcomposer.json置いとけ、と公式に書いてある。

参考:Deploying PHP Apps on Heroku | Heroku Dev Center

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.

普通はこれだけで大丈夫らしい。

・・が、Laravel5のアプリケーションルートにpackage.jsonもあるので、Node.jsかPHPか判定に迷い、(なぜか)Node.jsが勝つらしい・・
Herokuめ・・・

HerokuでNode.jsだと認識してもらうには・・

参考:Deploying Node.js Apps on Heroku | Heroku Dev Center

Heroku Node.js support will only be applied when the application has a package.json file in the root directory.

両方ある場合はなぜかNode.jsになってしまう・・・ひどい・・

この場合は環境変数で指定すれば大丈夫らしい。 BUILDPACK_URLめっちゃ重要やん・・

33
32
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
32