Wo werden temporäre Dateien erstellt?

12

Ich möchte wissen, wo Drupal (oder seine Module) temporäre Dateien erstellen. Sind sie in Sites / Standard gesetzt?

Ich spreche vor allem von Drupal 6.

AgA
quelle
Module können versuchen , temporäre Dateien an einer beliebigen Stelle auf der Drupal-Site zu erstellen, dies gelingt jedoch nur, wenn die Serverkonfiguration dies zulässt. Siehe: drupal.org/node/244924
August

Antworten:

16

Dateien werden in dem Verzeichnis erstellt, dessen Name von file_directory_temp () zurückgegeben wird, das Folgendes zurückgibt:

  • Der Wert der Drupal-Variablen "file_temporary_path", der auf der Einstellungsseite unter admin / config / media / file-system (Drupal 7) oder admin / settings / file-system (Drupal 6) festgelegt wird.

  • Wenn diese Drupal-Variable nicht festgelegt ist, überprüft die Funktion eines der folgenden Verzeichnisse. Wenn eines dieser Verzeichnisse vorhanden ist, wird es zurückgegeben (und verwendet).

    • Das Verzeichnis, von dem zurückgegeben wurde ini_get('upload_tmp_dir')
    • Unter Windows die Verzeichnisse "c: \ windows \ temp" und "c: \ winnt \ temp".
    • Auf anderen Betriebssystemen als Windows das Verzeichnis "/ tmp".
    • In PHP Version 5.2.1 oder höher wird das Verzeichnis von zurückgegeben sys_get_temp_dir().
  • Wenn die Variable "file_temporary_path" nicht gesetzt ist und die im vorherigen Punkt aufgelisteten Verzeichnisse nicht existieren oder nicht beschreibbar sind, verwendet die Funktion den Wert der Drupal-Variablen "file_public_path". Standardmäßig hat dieses Verzeichnis den Wert conf_path() . '/files'"files", der in dem Verzeichnis enthalten ist, das die für die Drupal-Site verwendete Datei setting.php enthält.

Die Funktion setzt die Variable "file_temporary_path" auf das gefundene Verzeichnis.

Soweit ich weiß, öffnet jedes Modul temporäre Dateien über einen Pfad, der mit "temporary: //" beginnt (nur in Drupal 7 und höher verfügbar) oder verwendet file_directory_temp(). Das von zurückgegebene Verzeichnis file_directory_temp()kann sich von System zu System ändern, Module verwenden jedoch immer dieses Verzeichnis.

Drupal-Module haben nicht die Berechtigung, das Verzeichnis mit den Modulen zu schreiben. Es ist ziemlich schwierig, dass ein Modul dieses Verzeichnis verwendet, um temporäre Dateien zu erstellen. Wenn Sie ein Modul finden, das das Verzeichnis verwendet, das die Module enthält (oder ein beliebiges Unterverzeichnis dieses Verzeichnisses), melden Sie dies als Fehler.

kiamlaluno
quelle
Gilt Ihre Antwort für Drupal 6 oder nur für Drupal 7?
iStryker
1
Es gilt für beide, wie auch file_directory_temp()in Drupal 6 definiert, und der Code für die Funktion ändert sich nicht von Drupal 6 zu Drupal 7.
kiamlaluno
3

Die Einstellungsseite unter admin / settings / file-system enthält Einstellungen für das Verzeichnis, das für temporäre Dateien verwendet wird.

Einige Module können ein anderes Verzeichnis für temporäre Dateien auswählen. Es gibt keinen Standardordner.

Das ctools-Modul erstellt beispielsweise temporäre zwischengespeicherte Dateien im Verzeichnis / sites / default / files / ctools. So kann es variieren.

chrisjlee
quelle
Wollen Sie damit sagen, dass ein Modul eine temporäre Datei an einer beliebigen Stelle auf der Drupal-Site erstellen kann? Kann es auch in root / themes root / modules usw. erstellen?
22.
Ja, Module können überall temporäre Dateien erstellen. Sie bewahren sie normalerweise in einem Ordner auf, ebenso wie ctools. Nach meiner Erfahrung ist es selten, dass Module ein eigenes temporäres Verzeichnis erstellen. Die meisten Module verwenden das temporäre Standardverzeichnis, über das Chris spricht.
iStryker
@iStryker Heute habe ich in diesem Bericht / Status-Bereich meiner Website einen Fehler mit der Meldung "Das Dateiverzeichnis ist nicht geschützt" festgestellt und drupal.org/forum/newsletters/… empfohlen, im Dateiverzeichnis .htaccess zu erstellen und " Ablehnen von" zu setzen all "in .htaccess im Verzeichnis für temporäre Dateien zur Verhinderung der Codeausführung gefunden. Ich bin verwirrt. Ist es ein 'tmp'-Ordner, in dem oder in dem jedes Modul einen eigenen Ordner hat? Muss ich in jedem Ordner eine .htaccess-Datei ablegen?
Umair