Я пытаюсь опубликовать приложение Laravel на Heroku. Я исключил файл composer.lock из .gitignore и создал файл Procfile, содержащий
web: vendor/bin/heroku-php-apache2 public
Я создал приложение
heroku create myapp; git push heroku master;
Затем я получаю следующий вывод:
git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags heroku master:master Pushing to https://git.heroku.com/myapp.git POST git-receive-pack (1914 bytes) remote: Compressing source files... done. remote: Building source: remote: remote: -----> Node.js app detected remote: -----> Resetting git environment remote: remote: PRO TIP: Specify a node version in package.json remote: See https://devcenter.heroku.com/articles/nodejs-support remote: remote: -----> Defaulting to latest stable node: 0.10.35 remote: -----> Downloading and installing node remote: -----> Exporting config vars to environment remote: -----> Installing dependencies remote: npm WARN package.json myapp@0.0.0 No repository field. remote: -----> Cleaning up node-gyp and npm artifacts remote: -----> Building runtime environment remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... done, 9.6MB remote: -----> Launching... done, v5 remote: https://myapp.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done. To https://git.heroku.com/myapp.git 5b1c663..0dff021 master -> master updating local tracking ref 'refs/remotes/heroku/master' Completed successfully
Если я перейду к своему приложению, я получаю сообщение об ошибке приложения. Когда я смотрю на свои журналы, он говорит:
app[web.1]: bash: vendor/bin/heroku-php-apache2: No such file or directory
Я подозреваю, что почему-то Heroku не выполнил установку композитора , поскольку это не в моем выпуске git, и, может быть, он даже не узнал, что мое приложение является PHP-приложением? Разумеется, я также включил пустой файл index.php в свой корень. Не помогло.
Что мне здесь не хватает?
Я считаю, что нашел. Лучше читать строки («обнаружено приложение Node.js»). Решено, нажав эту команду:
heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-php
и повторное нажатие
Ха-ха, просто бросьте пакет.json в свой проект laravel. И тогда Heroku обнаружит ваше приложение как проект php.
Обязательно включите трейлинг-косую черту public
: public/
. Это была моя проблема. Я использую Laravel и NotReadableException in AbstractDecoder.php line 302:
и NotReadableException in AbstractDecoder.php line 302:
потому что он думал, что at AbstractDecoder->init('/app/public') in AbstractDriver.php line 64
была файлом , а не папку.