我正在尝试验证上传的.zip文件的内容,然后将其保存到所需的目录。
我的问题是:我可以重命名,提取tmp/
目录中的文件吗?文件会自动删除吗?
我只想知道我自己在tmp/
目录中创建的文件会发生什么。
目前的流程是:
tmp_name
重命名为...['tmp_name'].zip (if not exists)
...['tmp_name']
文件。...['tmp_name']
,文件已被删除。.zip
文件答案 0 :(得分:2)
您可以阅读here:
在大多数系统上,此目录在启动时或在本地系统关闭时清除。
但正如文档所述,在 Linux 级别上没有多少指定,它取决于分发。大多数服务器不会频繁重启,因此/tmp
文件夹可能会变得混乱,使用一些(大量)磁盘空间。但是,大多数Linux系统允许设置TMPTIME
变量:文件在/tmp
中可以存活的天数。因此,通过将变量设置为早于一天的1
个文件,将自动删除(尽管可能在一天之后不到一秒)。有关详细信息,请参阅this answer。
简短回答:文件是文件系统的一部分。它们通常不会自动删除,只能在重启或足够老时删除。这样可以确保在必须对文件执行一些操作时,它们不会在文件中间消失。虽然其中一个当然不知道。
因此,您应确保为文件指定不同的名称:如果两个进程同时发生,则不应进行交互。例如,使用随机数,以便第一个文件名为zip151323.zip
,第二个文件名为zip4745443233.zip
。
答案 1 :(得分:1)
这取决于您的操作系统和PHP配置。 PHP不管理文件系统,任何应用程序都可以添加此目录。
来自http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir:
upload_tmp_dir string用于存储文件的临时目录 在进行文件上传时。必须是PHP所用的任何用户都可写的 跑来跑去。如果未指定,PHP将使用系统的默认值。
如果此处指定的目录不可写,PHP将回退到 系统默认临时目录。如果打开open_basedir,那么 必须允许系统默认目录才能成功上传。
简而言之,它取决于您的操作系统和配置,因为这只是指向系统中某个文件夹的指针 - PHP不会为您管理这个。许多人只会在启动时删除这些文件,因此在解压缩后应该小心清理(或使用一些东西来清理任何垃圾)。
如果要创建一个库或模块以供一般重用,那么您需要在文档中指定您使用的临时文件夹的要求 - 当然,如果您将其用于快速处理之外的任何内容。 (即,你可能只是编写代码而忘记它,但如果你想保持安全......)。