Private y Tmp Files | Configurar archivos Privados y Temporales en Drupal

    Al realizar cualquier instalación de Drupal, durante el proceso se debería crear, de forma automática, la carpeta pública, para todos los archivos que serán accesibles desde el navegador, esta carpeta se llamará files, y podremos encontrarla dentro de la carpeta "web/sites/default/files", si haz realizado la instalación mediante Composer,

Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Si quieres aprender a instalar Drupal 9 utilizando Composer, HAZ CLIC AQUÍ

o dentro de "sites/default/files", en caso de que estés trabajando con una instalación de Drupal, siguiendo el procedimiento tradicional (Ya obsoleto), es decir, que haya sido instalado al descargar el archivo .zip desde www.drupal.org.

Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Si quieres aprende a instalar Drupal 9 descargando el archivo .zip (No recomendado), HAZ CLIC AQUÍ.

     Pero hoy nos vamos a centrar en otras dos carpetas con igual importancia dentro del sistema de archivos de Drupal, se trata de la ubicación para los archivos con acceso restringido, conocida como Private y la encargada de guardar los archivos temporales, normalmente conocida como tmp.

     Ambas carpetas no se instalan automáticamente, por lo que, una vez finalizada la instalación de nuestro proyecto Drupal, tendremos que añadir la configuración correspondiente a estas dos y crearlas de forma manual, en caso de ser necesario.

     Comprobando la configuración de los archivos de Drupal

     Lo primero que haremos antes de comenzar a modificar las configuraciones de los archivos privados y los temporales, es verificar la configuración del sistema de archivos de Drupal, para ello, accedermos a la url "/admin/config/media/file-system", o si tienes el módulo Admin Toolbar instalado, podrás acceder de la siguiente forma:

Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Si quieres aprender a instalar el módulo Admin Toolbar, HAZ CLIC AQUÍ

     En el momento en que accedas a la pantalla de configuración del sistema de archivos de Drupal, podrás comprobar de manera sencilla, cada una de las carpetas destinadas a alojamiento de tus documentos y archivos. Su aspecto será parecido al de la siguiente imagen:

Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Si nos fijamos más de cerca, comprobaremos que la carpeta que debería guardar los archivos privados todavía no existe, y que se ha añadido por defecto, una carpeta llamada tmp, para nuestros archivos terporales, pero si nos fijamos en el comentario que hay debajo de cada una de ellas, nos daremos cuenta que habrá que cambiar ambas configuraciones, ya que la recomendación es: "Drupal debe tener permisos de escritura sobre él y no debe ser accesible a través de la web. Este valor se debe cambiar en settings.php"

     Por lo tanto, para evitar posibles fallos al traspasar nuestro proyecto Drupal, desde el entorno local hacia el entorno de producción, modificaremos los parámetros en el archivo settings.php

   Configurando las carpetas Private y Tmp en Settings.php

     El primer paso, antes de añadir cualquier cambio en el archivo Settings.php, es que tendremos que agregar ambas carpetas en una ubicación, NO ACCESIBLE A TRAVÉS DE LA WEB, PERO SÍ DENTRO DE DRUPAL.

     En este caso, como hemos seguido la recomendación de instalar Drupal, por medio del gestor de paquetes Composer, nuestras carpetas Private y Tmp, deberían colocarse directamente en la carpeta root o principal, es decir, al mismo nivel que están las carpetas vendor y web, como muestra la siguiente imagen:

Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Ahora que ya tenemos creadas las dos carpetas, podremos añadir las nuevas configuraciones en el archivo Settings.php, que encontraremos dentro de "web/sites/default/settings.php", si estás trabajando en un entorno local, podrás añadirlos directamente a tu archivo "web/sites/default/settings.local.php",

   Configuración para la carpeta private

     Si abrimos el archivo settings.php y hacemos una búsqueda rápida de la palabra private, encontraremos una línea que nos servirá como refencia o modelo, para la configuración que tendremos que añadir.

    Aunque podríamos hacer la modificación directamente en la línea, descomentándola y añadiendo el valor, lo recomendable es copiarla y colocarla al mismo nivel que el resto de configuraciones que escribe drupal una vez instalado.

     Así que copiaremos la línea, y la pegaremos al final del archivo, junto con el resto de detalles de la conexión a la base de datos y la carpeta de sincronización. Luego quitaremos la almohadilla "#", para que deje de ser un comentario y agregraremos la ubicación de la carpeta private que hemos creado hace un momento.

Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

$settings['file_private_path'] = '../private';

O también podríamos añadir esta otra opción, ambas funcionarán igualmente.

$settings['file_private_path'] = __DIR__ . '/private';

   Configuración para la carpeta tmp

   Como mencionamos al principio de este artículo, cuando accedimos a la pantalla de configuración de archivos, descubrimos que se había configurado la carpeta tmp para los archivos privados, pero se recomienda modificar esta configuración, sobretodo para evitar errores al cambiar de entornos nuestro proyecto.

     Es posible, que si estás trabajando en un entorno local con soluciones del tipo Xampp, Wamp o Mamp, tengas que configurar tu la carpeta temporal con algo paredido a "C:/xampp/drupal/tmp".

    Al igual que hicimos con la configuración de la carpeta private, buscaremos en el archivo settings.php, la línea que nos servirá como referencia para nuestra configuración.

Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     A continuación, repetiremos el mismo proceso, es decir, copiaremos la línea y la pegaremos al final del archivo settings.php o settings.local.php, junto con el resto de configuraciones y pondremos lo siguiente:

$settings['file_temp_path'] = '../tmp';

O también podríamos añadir esta otra opción, ambas funcionarán igualmente.

$settings['file_temp_path'] = __DIR__ . '/tmp';

     Una vez guardados los cambios, borraremos la cache de Drupal, el aspecto de nuestro archivo settings.php debería ser algo parecido a la siguiente imagen:

Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Y si volvemos a la interfaz de Drupal, en la pantalla de configuración del Sistema de archivos, deberíamos ver las siguientes modificaciones:

Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony