Help us understand the problem. What is going on with this article?

Laravel5 を Heroku にデプロイ

More than 5 years have passed since last update.

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めっちゃ重要やん・・

heartrails
ハートレイルズは、新規事業の立ち上げに伴うウェブサービス、スマホアプリの企画、開発、運用に特化した開発会社です。
http://www.heartrails.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした