为了账号安全,请及时绑定邮箱和手机立即绑定

Heroku PHP应用程序可在本地运行,如果我推送供应商目录,则在部署时有效,

Heroku PHP应用程序可在本地运行,如果我推送供应商目录,则在部署时有效,

PHP
至尊宝的传说 2021-05-07 18:21:04
这让我很困惑。我已经构建了一个简单的heroku应用程序。它在本地工作正常。如果我推送供应商目录,它实际上可以在Heroku上正常工作,但是heroku警告我不要推送作曲家供应商目录。该消息将我定向到一个链接,该链接指示我使用composer.lock文件进行依赖性。因此,我添加了一个.gitignore来忽略供应商目录并再次推送,但是当我这样做时,该应用程序将无法运行。我检查了heroku遥控器上的文件结构,看来依赖项已正确安装,但该应用程序无法正常工作。我正在尝试以正确的方式执行此操作,因此,即使我知道可以直接推送供应商文件夹,它也可以正常工作,所以我确实希望它能够正常工作。有人遇到过这个吗?这是我的composer.json文件中的代码{    "require": {        "salesforce-mc/fuel-sdk-php": "1.2.2",        "guzzlehttp/guzzle": "~6.0",        "ext-soap": "*",        "php": "7.1.28",        "ext-mcrypt": "*"    }}和我的Procfileweb: vendor/bin/heroku-php-apache2我尝试加载页面时遇到的错误是很普通的This page isn’t working project.herokuapp.com is currently unable to handle this request.HTTP ERROR 500这是当我包括供应商文件夹时得到的输出,当我这样做时,该应用程序便可以正常工作。我想现在我会顺其自然,因为它正在工作,但是很高兴知道如何以正确的方式进行操作。当heroku安装依赖项时,自动加载一定存在某种文件结构问题,该问题无法自行解决。
查看完整描述

1 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

事实证明,这与文件结构有关。我的index.php是我应用程序的根目录。当我在Heroku上实际查看文件结构时,我意识到Heroku期望有所不同。因此,由于目录结构的原因,自动加载基本上无法正常工作。我进行了重组,将html文件放在/ public目录中,并将供应商文件夹保留在根目录下。现在它可以完美地工作了,我不需要上载供应商目录。我的文件结构现在看起来像这样:


.git

public

--index.php

src

vendor

--autoload.php

composer.json

composer.lock

Procfile

而我的Procfile仅有这一行:


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

最后,只需确保在/ public目录下的php文件中上一层即可获取根目录和子文件夹中的php文件。所以那行看起来像:


require '../vendor/autoload.php';


查看完整回答
反对 回复 2021-05-21
  • 1 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信