一時ファイルはどこに作成されますか?


12

Drupal(またはそのモジュール)が一時ファイルを作成する場所を知りたい。サイト/デフォルトに配置されていますか?

特にDrupal 6について話している。


モジュールは、drupalサイト上の任意の場所に一時ファイルを作成しようとしますが、サーバー構成で許可されている場合にのみ成功します。参照:drupal.org/node/244924
August1914

回答:


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とは異なるOSでは、ディレクトリ「/ tmp」。
    • PHPバージョン5.2.1以降では、によって返されるディレクトリsys_get_temp_dir()
  • 変数「file_temporary_path」が設定されておらず、前のポイントでリストしたディレクトリが存在しないか、書き込み可能でない場合、関数はDrupal変数「file_public_path」の値を使用します。デフォルトでは、そのディレクトリの値conf_path() . '/files'は、Drupalサイトで使用されるsetting.phpファイルを含むディレクトリに含まれるディレクトリ「files」です。

この関数は、変数「file_temporary_path」を、見つかったディレクトリに設定しました。

私の知る限り、どのモジュールも「temporary://」で始まるパス(Drupal 7以降でのみ使用可能)またはusesを使用して一時ファイルを開きますfile_directory_temp()。から返されるディレクトリはfile_directory_temp()システムごとに変更できますが、モジュールは常にそのディレクトリを使用します。

Drupalモジュールには、モジュールを含むディレクトリを書き込む権限がありません。モジュールがそのディレクトリを使用して一時ファイルを作成することは非常に困難です。モジュールを含むディレクトリ(またはそのディレクトリのサブディレクトリ)を使用するモジュールを見つけた場合は、バグとして報告します。


あなたの答えはDrupal 6またはDrupal 7だけに適用されますか?
iStryker

1
両方に適用されfile_directory_temp()すぎるのDrupal 6で定義され、関数のコードは、Drupalの7へのDrupal 6から通過変わらない
kiamlaluno

3

admin / settings / file-systemの設定ページには、一時ファイルに使用されるディレクトリの設定が含まれています。

一部のモジュールでは、一時ファイル用に別のディレクトリを選択できます。標準のフォルダーの場所はありません。

たとえば、ctoolsモジュールは/ sites / default / files / ctoolsディレクトリに一時的なキャッシュファイルを作成します。そのため、異なる場合があります。


モジュールは、drupalサイトのどこにでも一時ファイルを作成できると言っていますか?root / themes root / modulesなどにも作成できますか?
AgAを

はい、モジュールはどこでも一時ファイルを作成できます。通常、ctoolsと同様に、1つのフォルダーに保存します。私の経験から、独自の一時ディレクトリを作成することはまれです。ほとんどのモジュールは、Chrisが説明しているデフォルトの一時ディレクトリを使用します。
iStryker

@iStryker今日、私は言って私のウェブサイトのレポート/ステータスセクションでエラー「ファイルディレクトリが保護されていない」と提案しましたdrupal.org/forum/newsletters/...ファイルのディレクトリにある.htaccessを作成してからも拒否」置くためにをコード実行防止のために一時ファイルディレクトリにある.htaccessのall 私は混乱しています。それは「tmp」フォルダですか、それともすべてのモジュールに独自のフォルダがありますか?すべてのフォルダーに.htaccessファイルを配置する必要がありますか?
Umair
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.