2015-04-06 140 views
2

我正在尝试使用Nginx + Phalcon。所以我有根文件夹(应用程序)和我的公共文件夹(应用程序/公共)。Heroku Procfile不能正常工作

根(应用程序)我有里面的Procfile:

web: vendor/bin/heroku-php-nginx -C nginx_app.conf public/ 

而且在我的公用文件夹,我有我的index.php

<?php exit('hello'); 

有了这个简单的例子,应该不会打印打招呼当我访问url myapp.herokuapp.com?

如果我的想法是正确的,哪个不起作用。我的第二个问题是nginx_app.conf似乎没有被服务器读取。因为我尝试访问的每个f *页面都有404个。

那么,我做错了什么?

[增订]

这里的日志:

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 

[增订]

$ git push ... 
[...] 
remote: -----> Discovering process types 
remote:  Procfile declares types -> web 

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

而且根据documentation应该

heroku run bash 
Running `bash` attached to terminal... up, run.5662 
$ cat Procfile 
web: vendor/bin/heroku-php-apache2 

一个小细节,我曾尝试:

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... 

我等待着......让我们看看会发生什么

+0

dyno启动后'heroku logs'的输出是什么? – dzuelke

+0

嘿!看到上面的更新。 – Pablo

+0

cat -v Procfile在测功机上给你什么? – dzuelke

回答

1

某处有问题,你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不会是这样的:

web: vendor/bin/heroku-php-nginx -C nginx_app.conf public/ 

,但实际上这样的:

\0xEF\0xBB\0xBFweb: vendor/bin/heroku-php-nginx -C nginx_app.conf public/ 

你的编辑器(以及大部分编辑也如此)根本不显示BOM。

要解决这个问题,请在没有BOM的情况下保存您的Procfile(并且,尽管如此,配置编辑器时绝不会保存UTF-8 BOM,因为它的使用非常令人沮丧,并导致无数问题,就像这样)。

+0

我同意我的Procfile有问题,但看看我上面的下一个更新。 – Pablo

+0

只是为了解决这个问题,首先这是个好主意。我的文件不是BOM,但是是一个UTF8,在这一点上,我不确定这是否是问题,但我更改为ANSI。其次,我还在bash上执行了Procfile行。所以这两件事对我有用。谢谢大家。 – Pablo

+0

所以现在它工作正常? dyno中的“cat procfile”现在是否显示正确的内容,在前面显示“web:”?如果是这样,那么也许这确实是你的系统/ Git /编辑器的问题... – dzuelke