如何在Heroku上部署静态网站应用

3
我按照类似主题的答案(https://dev59.com/CGkv5IYBdhLWcg3wgRCc#17531897)的指示进行操作。我的应用程序已部署在Heroku上,但运行不良好。我收到以下警告:

您的项目仅包含'index.php',没有'composer.json'。 使用'index.php'声明应用程序类型为PHP已过时,并可能导致意外行为。

我需要安装一些东西吗?
更新 项目结构最初是这样的: Project structure was initially this 我做了以下事情:
  • 安装了 PHP 5composer
  • package.json 重命名为 composer.json 并删除 package-lock.json
  • 键入 "composer update" 命令。我得到了 "nothing to install or update" 的消息。
  • 将 vendor 添加到 gitignore。将更改推送到 heroku。
我收到以下警告:
  1. 您的 'composer.lock' 已过期!

  2. 在项目中找到 Composer vendor dir!


如果你还没有在互联网上搜索错误,请查看(第一)https://stackoverflow.com/q/44683097/1415724和第二个搜索结果https://devcenter.heroku.com/articles/deploying-php- 还有更多的结果,所以你可能需要从那里继续。 - Funk Forty Niner
我做了一些研究。最初我没有安装php或composer。我按照heroku的说明安装了它们,但网站仍然无法正常工作。我有php 5,但这不应该是问题。 - nick
1
你能详细说明一下“不好用”是什么意思吗? - Yohanes Gultom
UI界面与本地不一致。向下滚动页面无法正常工作。 - nick
package.jsonpackage-lock.json很可能是JavaScript依赖项。将它们重命名回原来的名称,不要删除锁定文件。在可重复部署中,您始终需要锁定文件。您的vendor文件夹中的文件是否提交到仓库中?我怀疑您需要解决这个问题-从仓库中删除它们,并添加一个composer.json文件(以及锁定文件)以使用Composer进行安装。 - halfer
显示剩余3条评论
1个回答

4
Heroku的抱怨是关于这个文件夹的。具体而言,是与此文件夹有关
顺便提一下,目前这个文件夹的内容如下:
bootstrap
fontawesome-free
jquery-easing
jquery

这里发生的事情是有人将依赖项提交到您的版本控制中,这不是一个好的做法。它可以工作,但升级并不容易,特别是因为您无法轻松查看当前所拥有的版本。
有三种方法可以解决这个问题。
  1. 通过搜索Packagist来确定它们是否是PHP依赖项。Bootstrap确实有一个Composer依赖项,但您需要查看您正在使用的版本是否可用(或者您是否可以升级到可用的版本)。

  2. 通过搜索NPM来确定它们是否是JavaScript依赖项。我想如果值得检查您的package.json的内容,以防这些已经被覆盖。就我而言,我通常会考虑这些作为JavaScript库而不是PHP,但您可以根据自己的情况进行选择。

  3. 选择保留这些依赖项在现有的vendor文件夹中。它可以工作,但出于上述原因,这并不理想。

在最后两种情况下,您可以使用以下方式的composer.json文件,并将其提交到存储库中:
{
  "require": {
  }
}

在这之后,您可以尝试运行composer install,以查看其是否会在空依赖列表上生成一个.lock文件。如果确实生成了,那么您也应该提交它。


选项3是最好的,因为我不介意未来的升级。那么,在这种情况下,我需要提交供应商文件夹吗? - nick
是的,如果您选择选项3,则将vendor文件夹保持不变,并尝试提交最小化的composer*文件。 - halfer
当我输入“composer install”时,我得到“没有要安装或更新”的消息和“生成自动加载文件”的消息。然后,在Heroku构建中,我收到了“找到composer目录”的警告。 - nick
你可以不使用锁定文件(因为没有需要锁定的内容)。我想知道是否有Heroku设置可以关闭目录错误行为,因为对于一个PHP项目来说,拥有一个已提交的“vendor”文件夹本身并不是灾难性的。如果没有这样的选项,请将“vendor”重命名为其他任何名称(例如“myvendors”),并修复所有引用它的项目中的问题。 - halfer
终于成功了!谢谢你花了这么多时间帮助我。 - nick
做得好,@Antony。如果你觉得有任何东西对未来的读者有用(例如如何在Heroku中关闭错误),那么欢迎在此添加额外的自我回答。我们为其他人创造的信息越多越好。:=) - halfer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接