在哪里创建临时文件?


12

我想知道Drupal(或其模块)在哪里创建临时文件。他们放在网站/默认?

我特别在谈论Drupal 6。


模块可以尝试对Drupal的网站的任何地方创建临时文件,但只会成功,而服务器配置允许它。请参阅:drupal.org/node/244924
14

Answers:


16

文件在其名字从返回的目录中创建file_directory_temp()返回:

  • Drupal变量“ file_temporary_path”的值,可从admin / config / media / file-system(Drupal 7)或admin / settings / file-system(Drupal 6)的设置页面设​​置。

  • 如果未设置该Drupal变量,则该函数检查以下目录之一;如果这些目录之一存在,则将其返回(并使用)。

    • 从中返回的目录 ini_get('upload_tmp_dir')
    • 在Windows上,目录为“ c:\ windows \ temp”和“ c:\ winnt \ temp”。
    • 在不同于Windows的操作系统上,目录为“ / tmp”。
    • 在PHP 5.2.1或更高版本上,由返回的目录sys_get_temp_dir()
  • 如果未设置变量“ file_temporary_path”,并且我在上一点中列出的目录不存在或不可写,则该函数使用Drupal变量“ file_public_path”的值;默认情况下,该目录的值conf_path() . '/files'是包含在用于Drupal站点的setting.php文件的目录中的目录“文件”。

该函数将变量“ file_temporary_path”设置为找到的目录。

据我所知,任何模块都使用以“ temporary://”(仅在Drupal 7及更高版本中可用)开头的路径打开临时文件或使用file_directory_temp()。返回的目录file_directory_temp()可以在系统之间更改,但是模块始终使用该目录。

Drupal模块无权编写包含模块的目录;模块使用该目录创建临时文件是非常困难的。如果找到使用包含该模块的目录的模块(或该目录的任何子目录),则将其报告为错误。


您的答案适用于Drupal 6还是Drupal 7?
iStryker

1
它适用于,如file_directory_temp()被在Drupal 6定义过了,该函数的代码不改变从Drupal的6传递到Drupal的7
kiamlaluno

3

admin / settings / file-system上的设置页面包含用于临时文件的目录的设置。

某些模块可以为临时文件选择其他目录。没有标准的文件夹位置。

例如,ctools模块将在/ sites / default / files / ctools目录中创建临时缓存的文件。因此可能会有所不同。


您是说模块可以在drupal站点中的任何地方创建临时文件吗?它也可以在根目录/主题根目录/模块等中创建吗?
AgA 2011年

是的,模块可以在任何地方创建临时文件。它们通常与工具一样将它们保存在一个文件夹中。根据我的经验,创建自己的临时目录的模块很少。大多数模块使用Chris谈论的默认临时目录。
iStryker

@iStryker今天,我在网站的报告/状态部分看到错误消息,提示“文件目录不受保护”,建议drupal.org/forum/newsletters/…在文件目录中创建.htaccess并输入“拒绝来自临时文件目录中的.htaccess文件中的“所有”。我很迷惑。它是某个地方的“ tmp”文件夹,还是每个模块都有自己的文件夹?我是否必须在每个文件夹中放入.htaccess文件?
Umair '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.