我知道Heroku有一个临时文件系统:
每个dyno都有自己的临时文件系统,其中包含新的 最近部署的代码。在dyno的一生中 进程可以将文件系统用作临时暂存器,但不能 写入的文件对于任何其他dyno和 测功机停止时,所有写入的文件将被丢弃,或者 重新启动。例如,这种情况会在更换测功机时发生 到应用程序部署,大约每天一次 正常的动态管理。
但是当我需要在dyno中调试时,所做的更改根本不会反映出来。
复制步骤:
创建一些随机的dyno,然后对那些dyno ssh / exec:
$ heroku ps:exec
Running this command for the first time requires a dyno restart.
Do you want to continue? [y/n]: y
Initializing feature... done
Restarting dynos... done
Waiting for web.1 to start... done
Establishing credentials... done
Connecting to web.1 on ⬢ wiwi123...
这是当前文件内容。我们可以简单地curl
证明请求
~ $ curl wiwi123.herokuapp.com
hello world
但是当我尝试更改它时
~ $ echo 'another' >> index.php
当前内容变为
~ $ cat index.php
hello world
another
不知何故,请求没有得到体现
~ $ curl wiwi123.herokuapp.com
hello world
我知道Heroku仍然引用此文件,因为如果我们删除/重命名它。它将得到反映。
~ $ mv index.php old.php
~ $ curl wiwi123.herokuapp.com
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /
on this server.<br />
</p>
</body></html>