我试图在Heroku上发布我的Laravel应用程序。 我从.gitignore中排除了composer.lock文件,并创建了一个包含
的Procfileweb: 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应用程序? 可以肯定的是,我还在root中包含了一个空的index.php文件。没有帮助。
我在这里缺少什么?
答案 0 :(得分:11)
我相信我找到了它。应该更好地阅读这些行("检测到Node.js app")。 通过触发此命令解决:
heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-php
再次推动
答案 1 :(得分:1)
哈哈,只需将package.json
放入你的laravel项目中即可。
然后Heroku会将您的应用程序检测为php项目。
答案 2 :(得分:0)
请务必在public
上添加尾部斜杠:public/
。这是我的问题 - 我正在使用Laravel并获得Image source not readable
和NotReadableException in AbstractDecoder.php line 302:
,因为它认为at AbstractDecoder->init('/app/public') in AbstractDriver.php line 64
是一个文件,而不是文件夹。