¿Dónde se crean los archivos temporales?

12

Quiero saber dónde Drupal (o sus módulos) crean archivos temporales. ¿Se ponen en sitios / por defecto?

Estoy hablando especialmente de Drupal 6.

AgA
fuente
Los módulos pueden intentar crear archivos temporales en cualquier parte del sitio de drupal, pero solo tendrán éxito donde la configuración del servidor lo permita. Ver: drupal.org/node/244924
agosto de

Respuestas:

16

Los archivos se crean en el directorio cuyo nombre se devuelve desde file_directory_temp () que devuelve:

  • El valor de la variable de Drupal "file_temporary_path", que se configura desde la página de configuración en admin / config / media / file-system (Drupal 7) o admin / settings / file-system (Drupal 6).

  • Si esa variable Drupal no está configurada, la función verifica uno de los siguientes directorios; si existe uno de esos directorios, se devuelve (y se usa).

    • el directorio devuelto de ini_get('upload_tmp_dir')
    • en Windows, los directorios "c: \ windows \ temp" y "c: \ winnt \ temp".
    • en sistemas operativos diferentes de Windows, el directorio "/ tmp".
    • en PHP versión 5.2.1 o superior, el directorio devuelto por sys_get_temp_dir().
  • Si la variable "file_temporary_path" no está establecida, y los directorios que enumeré en el punto anterior no existen o no se pueden escribir, la función utiliza el valor de la variable Drupal "file_public_path"; de manera predeterminada, ese directorio tiene el valor conf_path() . '/files'que son los "archivos" del directorio contenidos en el directorio que contiene el archivo setting.php utilizado para el sitio Drupal.

La función establece la variable "file_temporary_path" en el directorio que encontró.

Hasta donde yo sé, cualquier módulo abre archivos temporales usando una ruta que comienza con "temporal: //" (disponible solo en Drupal 7 y superior) o usos file_directory_temp(). El directorio devuelto desde file_directory_temp()puede cambiar de un sistema a otro, pero los módulos siempre usan ese directorio.

Los módulos de Drupal no tienen permiso para escribir el directorio que contiene los módulos; Es bastante difícil que un módulo use ese directorio para crear archivos temporales. Si encuentra un módulo que utiliza el directorio que contiene los módulos (o cualquier subdirectorio de ese directorio), informe como un error.

kiamlaluno
fuente
¿Su respuesta se aplica a Drupal 6 o solo a Drupal 7?
iStryker
1
Se aplica a ambos, como también file_directory_temp()se define en Drupal 6, y el código para la función no cambia al pasar de Drupal 6 a Drupal 7.
kiamlaluno
3

La página de configuración en admin / settings / file-system contiene configuraciones para el directorio utilizado para archivos temporales.

Algunos módulos podrían elegir un directorio diferente para archivos temporales. No hay una ubicación de carpeta estándar.

Por ejemplo, el módulo ctools creará archivos temporales en caché en el directorio / sites / default / files / ctools. Entonces puede variar.

chrisjlee
fuente
¿Está diciendo que un módulo puede crear un archivo temporal en cualquier parte del sitio drupal? ¿Se puede crear también en root / themes root / modules, etc.?
AgA
Sí, los módulos pueden crear archivos temporales en cualquier lugar. Por lo general, los mantienen en una carpeta, al igual que ctools. Desde mi experiencia, los módulos que crean su propio directorio temporal son raros. La mayoría de los módulos utilizan el directorio temporal predeterminado del que habla Chris.
iStryker
@iStryker Hoy vi un error en esa sección de informes / estado de mi sitio web que decía "el directorio de archivos no está protegido" y sugerí drupal.org/forum/newsletters/… para crear .htaccess en el directorio de archivos y también puse "Denegar de all "en .htaccess encontrado en el directorio de archivos temporales para la prevención de ejecución de código. Estoy confundido. ¿Es una carpeta 'tmp' en algún lugar o cada módulo tiene su propia carpeta? ¿Tengo que poner el archivo .htaccess en cada carpeta?
Umair