2015-04-06 44 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