heroku上的应用程序错误 - 找不到'composer.json'

时间:2017-06-21 17:57:22

标签: php heroku

当我尝试访问我的heroku页面时,它说

  

“应用程序错误应用程序中发生错误,无法提供您的页面。如果您是应用程序所有者,请查看日志以获取详细信息”

这是我的构建日志:

  

检测到PHP应用!警告:找不到'composer.json'。运用   将index类型声明为PHP的'index.php'被认为是遗留的   功能可能会导致意外行为。自举...   安装平台软件包...注意:无需运行时   composer.lock;使用PHP ^ 5.5.17 apache(2.4.20)nginx(1.8.1)php   (5.6.30)安装依赖项... Composer版本1.4.1 2017-03-10   09:29:45准备运行时环境...注意:没有Procfile,使用   'web:heroku-php-apache2'。检查其他扩展程序   安装...发现流程类型Procfile声明类型 - >卷筒纸   压缩...完成:13.9M启动...发布v119部署到   Heroku Build完成博客职业文档

     

=============================================== =========================

1 个答案:

答案 0 :(得分:0)

composer.lock文件不仅必须存在于本地,还必须提交。这样,当您推送到Heroku时,它将包括在内。

尝试这样的事情:

git add composer.lock
git commit -m "Add Composer lock file"
git push heroku

这样做的原因是composer.json通常以某种模糊的方式指定依赖项,例如“无论最新的1.2.x版本是什么”或“ master分支上的最新提交”。您可能会想象,根据我们安装依赖项的时间,您和我可能会得到不同的结果。

composer.lock文件的工作是以更严格的方式锁定这些依赖项。如果您安装了库的最新1.2.x版本,则其精确版本会记录在composer.lock中,例如“ Git哈希为1234abc的版本1.2.2”。

通常,除非您有意更新库,否则最好使用composerinstall而不是composer更新。前者使用锁定文件中的确切版本,并且不更新任何内容。这样,我们可以更有信心使用相同的库。后者会更新新版本并更改锁定文件。

我从未将Heroku与PHP一起使用,但是它想要安装锁定文件中列出的确切版本是有道理的。