Как загрузить на amazon s3 с помощью Heroku composer amazon aws sdk

Я использую heroku и следую этому туториалу, https://devcenter.heroku.com/articles/s3-upload-php

Я поместил строку composer require в свой файл composer.json, как показано ниже.

{ "require": { "silex/silex": "~1.1", "monolog/monolog": "~1.7" }, "require-dev": { "heroku/heroku-buildpack-php": "*" } , «требовать»: { «aws/aws-sdk-php»: «~ 2.6» } }

Как видите, я разместил амазонку последней. Однако я получаю следующее сообщение об ошибке.

2015-02-27T16:26:05.499004+00:00 приложение[web.1]: [27 февраля 2015 г. 16:26:05 UTC] Предупреждение PHP: require(vendor/autoload.php): не удалось открыть поток: Нет такого файла или каталога в /app/web/fb/fileupload.php в строке 4

Кто-нибудь знает, нужно ли мне что-то делать, кроме как поместить эту строку в мой json-файл композитора???? пожалуйста помоги


person Ricky Mossip    schedule 27.02.2015    source источник


Ответы (2)


Теперь у вас есть два ключа «require», как это должно работать? Это хеш-карта, ключи перезаписывают друг друга!

Это то, что вы хотите:

{
  "require": {
    "silex/silex": "~1.1",
    "monolog/monolog": "~1.7",
    "aws/aws-sdk-php": "~2.6"
  },
  "require-dev": {
    "heroku/heroku-buildpack-php": "*"
  }
}

И затем вам, конечно, нужно запустить composer update, чтобы сгенерировать composer.lock, и проверить это в репозиториях вместе с остальным кодом.

Почему бы вам не запустить приложение локально на вашем компьютере, прежде чем отправить его на Heroku?

person dzuelke    schedule 27.02.2015
comment
Я вроде как начинающий разработчик, только кодирую с 2009 года и только с as3, php, c#, .net. Для приложения требуется API-интерфейс facebook, и я не совсем уверен, как запустить приложение локально. В любом случае, мне нужно как-то запустить обновление композитора на моем динамометре heroku. - person Ricky Mossip; 28.02.2015
comment
Нет, не знаешь. Как я уже сказал, вы запускаете composer update локально, поэтому ваши версии зависимостей замораживаются до известного и воспроизводимого состояния в composer.lock. В этом весь смысл управления зависимостями. Затем вы регистрируете измененные composer.json и composer.lock и отправляете их в Heroku, он установит для вас зависимости. - person dzuelke; 28.02.2015
comment
И, конечно же, если вы хотите включить автозагрузчик из подпапки fb/ вашего приложения, вам нужно require('../vendor/autoload.php');, а еще лучше require(__DIR__.'/../vendor/autoload.php');... - person dzuelke; 28.02.2015
comment
почему мой файл .gitignore содержит каталог продавца? мне нужно удалить это, чтобы библиотеки были переданы на сервер при следующем нажатии? - person Ricky Mossip; 01.03.2015
comment
Нет. Каталог vendor/ содержит исходный код зависимостей. Весь смысл Composer, Bundler, NPM и т. д. заключается в том, что вы не проверяете источники зависимостей, а только объявление, которое является composer.json (то, что вам нужно) и composer.lock (замороженное состояние, когда вы в последний раз запустил composer update, поэтому вы, ваши соразработчики, Heroku и т. д. всегда устанавливаете одни и те же зависимости для каждого composer install или развертывания, а не новые версии, которые когда-нибудь ломают что-то). Просто следуйте инструкциям, которые я вам дал, и Heroku установит AWS SDK. - person dzuelke; 02.03.2015

Похоже, включение не может найти vendor/autoload.php

Вы уверены, что он существует?

Папка vendor должна быть в папке fb и иметь этот файл. Помните, что регистр чувствителен.

  1. Просто убедитесь, что вы указываете правильный файл во включении.
  2. Убедитесь, что вы запустили composer install
person E_p    schedule 27.02.2015
comment
Хорошо, я изменил свой json-файл композитора, чтобы он был похож на ваш. Как мне запустить обновление Heroku Composer? - person Ricky Mossip; 27.02.2015
comment
когда я пытаюсь запустить установку композитора с помощью интерфейса командной строки heroku toolbelt, он говорит, что команда не найдена - person Ricky Mossip; 27.02.2015
comment
также, файл не существует. я должен как-то запустить обновление композитора - person Ricky Mossip; 28.02.2015