3

我一直在到处寻找这个问题的答案。

我在 Laravel 中构建了一个应用程序 - 我选择 Heroku 进行部署,我包含了一个自定义 Procfile 和 httpd.conf 来将文档根目录重写为公共。这一切都很好。

但是,我的应用程序在加载时显示内部 500 错误,因为它没有加载任何依赖项,即在部署时没有运行作曲家。

我的问题是:如何让作曲家在部署时运行?

ps 我对这种东西完全是菜鸟,所以请提供尽可能多的细节。

我见过的唯一可能的解决方案是:http: //bergie.iki.fi/blog/using_composer_to_manage_dependencies_in_heroku_php_apps/

但我相信有比这更好的方法。

4

2 回答 2

3

尝试以下

作曲家修复

您需要生成并包含composer.lock在 repo 中,但 Laravel 的默认.gitignore忽略composer.lock

  • composer.lock从中删除.gitignore
  • $ composer install

添加您的 Procfile

Heroku 根据名为Procfile. 默认apache2进程(如果您不使用 a Procfile)指向web root,而不是指向/public,因此我们需要创建一个自定义Procfile以从/public.

  • 添加一个名为 Procfile 的文件,其中包含以下行:

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

将您的代码部署到 Heroku 应用程序

$ git push heroku master
于 2014-05-27T06:40:58.080 回答
1

另一个可能的原因是 Heroku 无法将您的应用程序识别为 PHP 应用程序,例如因为根目录中存在 package.json。所以它不会为你做 composer install 。

解决方案是指定一个构建包,然后再次推送。

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

另请参阅: Heroku 不将我的 Laravel 应用程序识别为 PHP 应用程序,并且不执行 composer install

于 2015-01-02T11:53:38.393 回答