Heroku deploy自动删除服务器文件


Heroku deploy deletes server files automatically?

我是HEROKU APPS的新手。

在我的heroku应用程序我有一个问题。这是我使用一个php脚本来保存数据在服务器上。

的例子:

<?PHP
$file = "example.txt";
$data = "Something...";
file_put_contents($file,$data);
?>

这个PHP脚本运行成功并完美保存数据。

但是,当我部署我的APP到HEROKU更新->在这个过程中example.txt文件被自动删除。

Heroku File Systems

Heroku的行为取决于你使用的栈。在Bamboo中,大多数文件系统是只读的。对于雪松,它是短暂的。

无论哪种情况,文件系统都不能在dynos之间共享,也不应该用于存储。为了可靠地在服务器端存储数据,您需要使用数据库(可能将上传的数据存储为blob),或者作为另一台主机或服务上的外部资产。

Heroku不为git push之间的持久化文件提供硬盘空间,您必须使用Amazon S3之类的东西来存储文件。这就是为什么Heroku称他们的文件系统为Ephemeral文件系统。在早期版本的堆栈中,它甚至是只读的。

Heroku有一个教程:使用AWS S3存储静态资产和文件上传

请参阅文档:

<

临时文件系统/h3>

每个dyno都有自己的临时文件系统,以及最近部署的代码的新副本。在dyno的生命周期中,它运行的进程可以将文件系统用作临时的刮擦板,但是写入的文件对任何其他dyno中的进程都不可见,并且写入的任何文件将在dyno停止或重新启动的那一刻被丢弃。

所以你不能用你的Heroku dyno节省很多。特别是在您推送了新版本之后,会重新启动动态服务器,然后重置文件系统。

您需要将文件存储到远程位置,然后如果它们应该在dyno重置后存活