首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Heroku Procfile不工作

Heroku Procfile不工作
EN

Stack Overflow用户
提问于 2015-04-07 07:52:05
回答 1查看 11K关注 0票数 2

我正在尝试使用Nginx + Phalcon。所以我有根文件夹(app)和我的公共文件夹(app/ public )。

在根目录(app)中,我有Procfile:

代码语言:javascript
复制
web: vendor/bin/heroku-php-nginx -C nginx_app.conf public/

在我的公共文件夹中有我的index.php

代码语言:javascript
复制
<?php exit('hello');

在这个简单的例子中,当我访问url myapp.herokuapp.com时,不应该打印问候吗?

如果我的想法是对的,这是行不通的。我的第二个问题是nginx_app.conf似乎没有被服务器读取。因为我尝试访问的每个f*页面都得到了404。

那么,我做错了什么呢?

已更新

日志如下:

代码语言:javascript
复制
heroku[web.1]: State changed from down to starting
heroku[web.1]: Starting process with command `php -S 0.0.0.0:57262`
heroku[web.1]: State changed from starting to up
app[web.1]: [Tue Apr  7 11:08:07 2015] 10.185.81.31:28258 Invalid request (Unexpected EOF)
app[web.1]: [Tue Apr  7 11:08:07 2015] 172.19.28.141:33686 Invalid request (Unexpected EOF)
heroku[router]: at=info method=GET path="/" host=myapp.herokuapp.com request_id=d39f119a-fd95-4887-809f-74712925606f fwd="200.221.158.131" dyno=web.1 connect=2ms service=4ms status=404 bytes=668
app[web.1]: [Tue Apr  7 11:08:44 2015] 10.61.196.230:38679 [404]: / - No such file or directory

已更新

代码语言:javascript
复制
$ git push ...
[...]
remote: -----> Discovering process types
remote:        Procfile declares types -> web

$ heroku run bash
$ cat Procfile
~ $ : vendor/bin/heroku-php-nginx public/~ $

根据documentation应该是

代码语言:javascript
复制
heroku run bash
Running `bash` attached to terminal... up, run.5662
$ cat Procfile
web: vendor/bin/heroku-php-apache2

下面是我尝试过的一些细节:

代码语言:javascript
复制
cat Procfile
~ $ vendor/bin/heroku-php-nginx public/c/~ $
vendor/bin/heroku-php-nginx public/
DOCUMENT_ROOT changed to 'public/'
Optimzing defaults for 1X dyno...
4 processes at 128MB memory limit.
Starting php-fpm...
Starting nginx...

我在等..。让我们看看会发生什么

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-08 02:03:52

您的Procfile出了点问题;正如您所看到的,Heroku在默认的php -S模式下启动。当Procfile存在,但没有声明"web“流程类型时,就会发生这种情况;这也应该在git push heroku master末尾的消息中写出来(关于Procfile没有声明"web”流程类型,然后使用了默认值)。

这就排除了你的Procfile没有被检入到Git或者有错误的名字(例如,小写的procfile)。

罪魁祸首很可能是您正在使用的编辑器在文件开头插入的Unicode字节顺序标记:https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8

所以你的Procfile不是这样的:

代码语言:javascript
复制
web: vendor/bin/heroku-php-nginx -C nginx_app.conf public/

但实际上是这样的:

代码语言:javascript
复制
\0xEF\0xBB\0xBFweb: vendor/bin/heroku-php-nginx -C nginx_app.conf public/

您的编辑器(以及大多数编辑器)根本不显示BOM。

要解决这个问题,请保存Procfile而不保存BOM (同时,将编辑器配置为从不保存UTF8BOM,因为使用UTF8BOM是非常不鼓励的,并且会导致无数问题,就像这个问题一样)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29481506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档