Où sont créés les fichiers temporaires?

12

Je veux savoir où Drupal (ou ses modules) crée des fichiers temporaires. Sont-ils mis en sites / par défaut?

Je parle surtout de Drupal 6.

AgA
la source
Les modules peuvent essayer de créer des fichiers temporaires n'importe où sur le site drupal, mais ne réussiront que là où la configuration du serveur le permet. Voir: drupal.org/node/244924
August1914

Réponses:

16

Les fichiers sont créés dans le répertoire dont le nom est renvoyé par file_directory_temp () qui renvoie:

  • La valeur de la variable Drupal "file_temporary_path", qui est définie à partir de la page de configuration sur admin / config / media / file-system (Drupal 7) ou admin / settings / file-system (Drupal 6).

  • Si cette variable Drupal n'est pas définie, la fonction vérifie l'un des répertoires suivants; si l'un de ces répertoires existe, il est retourné (et utilisé).

    • le répertoire renvoyé par ini_get('upload_tmp_dir')
    • sous Windows, les répertoires "c: \ windows \ temp" et "c: \ winnt \ temp".
    • sur des OS différents de Windows, le répertoire "/ tmp".
    • sur PHP version 5.2.1 ou supérieure, le répertoire renvoyé par sys_get_temp_dir().
  • Si la variable "file_temporary_path" n'est pas définie et que les répertoires que j'ai répertoriés au point précédent n'existent pas ou ne sont pas accessibles en écriture, la fonction utilise la valeur de la variable Drupal "file_public_path"; par défaut, ce répertoire a la valeur conf_path() . '/files'qui est le répertoire "files" contenu dans le répertoire contenant le fichier setting.php utilisé pour le site Drupal.

La fonction a défini la variable "file_temporary_path" dans le répertoire qu'elle a trouvé.

Pour autant que je sache, n'importe quel module ouvre des fichiers temporaires en utilisant un chemin commençant par "temporaire: //" (disponible uniquement dans Drupal 7 et supérieur) ou utilise file_directory_temp(). Le répertoire renvoyé depuis file_directory_temp()peut changer de système en système, mais les modules utilisent toujours ce répertoire.

Les modules Drupal n'ont pas la permission d'écrire le répertoire contenant les modules; il est assez difficile qu'un module utilise ce répertoire pour créer des fichiers temporaires. Si vous trouvez un module qui utilise le répertoire contenant les modules (ou n'importe quel sous-répertoire de ce répertoire), signalez-le comme un bogue.

kiamlaluno
la source
votre réponse s'applique-t-elle à Drupal 6 ou simplement à Drupal 7?
iStryker
1
Elle s'applique aux deux, comme cela file_directory_temp()est défini dans Drupal 6 aussi, et le code de la fonction ne change pas en passant de Drupal 6 à Drupal 7.
kiamlaluno
3

La page de configuration dans admin / settings / file-system contient les paramètres du répertoire utilisé pour les fichiers temporaires.

Certains modules pouvaient choisir un répertoire différent pour les fichiers temporaires. Il n'y a pas d'emplacement de dossier standard.

Par exemple, le module ctools créera des fichiers en cache temporaires dans le répertoire / sites / default / files / ctools. Cela peut donc varier.

chrisjlee
la source
Voulez-vous dire qu'un module peut créer un fichier temporaire n'importe où sur le site drupal? Peut-il également créer en racine / thèmes racine / modules etc?
AgA
Oui, les modules peuvent créer des fichiers temporaires n'importe où. Ils les conservent généralement dans un dossier, tout comme ctools. D'après mon expérience, la création de leur propre répertoire temporaire est rare. La plupart des modules utilisent le répertoire temporaire par défaut dont parle Chris.
iStryker
@iStryker Aujourd'hui, j'ai vu une erreur dans la section rapports / état de mon site Web disant "le répertoire des fichiers n'est pas protégé" et j'ai suggéré à drupal.org/forum/newsletters/… de créer .htaccess dans le répertoire des fichiers et de mettre également "Refuser de tous "dans .htaccess trouvé dans le répertoire des fichiers temporaires pour la prévention de l'exécution du code. Je suis confus. S'agit-il d'un dossier «tmp» où certains modules ou chaque module ont leur propre dossier? Dois-je mettre un fichier .htaccess dans chaque dossier?
Umair