2015-12-10 2 views
0

Я хочу разместить ответные меры на Heroku. Так что я сделал: - GIT клон репозитория respondcms - Heroku создать в этой папке - мерзавца мастер толчок Heroku и вот проблема: я всегда получаю следующее сообщение об ошибке в ЦМДPush responses to Heroku

remote: ----->PHP app detected 
remote: 
remote: !  ERROR: Your 'composer.json' lists dependencies inside 'require', 
remote:  but no 'composer.lock' was found. Please run 'composer update' to 
remote:  re-generate 'composer.lock' if necessary, and commit it into your 
remote:  repository. For more information, please refer to the docs at 
remote:  https://devcenter.heroku.com/articles/php-support#activation 
remote: 
remote: 
remote: !  Push rejected, failed to compile PHP app 
remote: 
remote: Verifying deploy... 
remote: 
remote: !  Push rejected to app-name 

I сделал обновление для композитора, и это прекрасно работает, также есть файл composer.lock в папке. Кто-нибудь, кто пробовал хостинг responsecms на heroku уже и столкнулся с той же проблемой? Любые идеи, что я мог попробовать? Кроме того, я мог бы просто использовать другого хостинг-провайдера, который предлагает бесплатный сервис, поскольку это только для действительно небольшого представительного веб-сайта ....

ответ

3

Файл composer.lock не должен быть локальным, он должен быть совершено. Таким образом, он будет включен, когда вы нажмете на Хероку.

попробовать что-то вроде этого:

  • git add composer.lock
  • git commit используя сообщение как Add Composer lock file
  • git push heroku (или любой другой ваш пульт называется)

Причина этого заключается в том, что composer.json обычно задает зависимости несколько неопределенным образом, например «независимо от последней версии 1.2.x» или «последней фиксации на ветке master». Вероятно, вы можете себе представить, что мы с вами можем получить разные результаты в зависимости от того, когда мы установим наши зависимости.

Задача файла composer.lock заключается в том, чтобы заблокировать эти зависимости более строгим образом. Если вы устанавливаете последнюю версию библиотеки 1.2.x, то ее точная версия записывается в composer.lock, например. «версия 1.2.2 в Git hash 1234abc».

В общем, если вы не намеренно обновления библиотеки лучше использовать composerinstall, а не composer update. Первый использует точные версии из файла блокировки и ничего не обновляет. Таким образом, мы можем больше доверять тому, что мы используем идентичные библиотеки. Последний обновляет новые версии и изменяет файл блокировки.

Я никогда не использовал Heroku с PHP, но имеет смысл, что он хочет установить точные версии, перечисленные в файле блокировки.

+0

Большое вам спасибо, что сделал трюк. Я уже догадывался о чем-то подобном. RespondCMS имеет «composer.lock» в .gitignore, должен ли я просто удалить его оттуда, чтобы предотвратить это и для дальнейших коммитов? Я также думаю, что я должен удалить папку поставщика из моего репозитория git для приложения Heroku, не так ли? – bergben

+0

Я рад, что это сработало. Теперь, когда файл блокировки зафиксирован, его значение в '.gitignore' не имеет значения. Система игнорирования Git применяется только к необработанному контенту. Любые изменения в 'composer.lock' теперь будут распознаны Git. (Хотя IMO файл, вероятно, не следует игнорировать.) – Chris

+0

Удаление 'vendor /' тоже хорошая идея. [Heroku построит это для вас из файлов Composer] (https://devcenter.heroku.com/articles/getting-started-with-php#declare-app-dependencies). 'git rm -r --cached vendor' должен делать трюк. ('--cached' оставит файлы в вашей рабочей копии, но удалите их из репозитория.) Затем добавьте' vendor/'в ваш' .gitignore'. – Chris

Смежные вопросы