为什么Heroku看不到我部署后创建的文件?

时间:2015-04-01 23:38:31

标签: php git heroku yii yii2

我想在Yii中设置资产编译和缩小,就像Rails一样。 http://www.yiiframework.com/doc-2.0/guide-structure-assets.html

我在考虑使用PHP minifier。我宁愿不必手动编译并将资产签入Git。但是,即使它工作,Heroku似乎不会服务于不在Git中的新文件。为什么呢?

>heroku run bash
Running `bash` attached to terminal... up, run.6857
~ $ cd web
cd web
~/web $ ls
ls
MySample.php  css          images          index.php  robots.txt
assets        favicon.ico  index-test.php  js
~/web $ echo hello > hello.txt
echo hello > hello.txt
~/web $ cat hello.txt
cat hello.txt
hello
~/web $ exit
exit
exit

$ curl -I http://xxxxxx.herokuapp.com/hello.txt
HTTP/1.1 404 Not Found

1 个答案:

答案 0 :(得分:1)

找不到hello.txt的原因是因为你的curl -I请求将由你的应用程序的新实例处理。为了演示,我可以在bash中删除我的index.php,但是当我使用curl -I来检索它时,我得到200 OK。

$ heroku run bash
Running `bash` attached to terminal... up, run.3070
~ $ cd web
~/web $ ls                    
index.php
~/web $ rm index.php      
~/web $ ls
~/web $ curl -I http://xxxxx.herokuapp.com/index.php
HTTP/1.1 200 OK

另一种展示它的方法是打开两个不同的bash连接,然后运行heroku ps

$ heroku ps
=== run: one-off processes
run.3070 (1X): up 2015/04/01 19:30:07 (~ 37m ago): `bash`
run.7783 (1X): up 2015/04/01 19:59:48 (~ 8m ago): `bash`

这两个过程不会分享短暂的记忆。