Cómo solucionar el error 'Cache directory must be writable' en PrestaShop
Si estás leyendo esto, es muy probable que te hayas encontrado con un mensaje de error bastante molesto en tu tienda online: "Cache directory must be writable" (El directorio de caché debe tener permisos de escritura).
No te preocupes, no has roto nada. Este es uno de los errores más comunes en PrestaShop y, a pesar de que suena muy técnico, tiene una solución bastante sencilla. En este artículo, vamos a desglosar paso a paso qué significa este mensaje, por qué ocurre y, lo más importante, cómo solucionarlo para que tu tienda vuelva a funcionar a pleno rendimiento.
Vamos a ello.
¿Qué significa el Error "Cache directory must be writable"?
Para entenderlo fácilmente, imagina que tu tienda PrestaShop es una cocina profesional. Para cocinar rápido y no tener que pelar patatas cada vez que llega un pedido, el chef prepara porciones y las guarda en la nevera. Esa "nevera" o "despensa" es el directorio de caché.
PrestaShop guarda archivos temporales (como imágenes redimensionadas, hojas de estilo o fragmentos de código) en una carpeta específica para no tener que volver a crearlos desde cero en cada visita. Esto hace que tu web sea mucho más rápida.
El error "Cache directory must be writable" significa que PrestaShop no tiene permiso para escribir (guardar) esos archivos temporales en esa carpeta. Es como si la puerta de la nevera estuviera cerrada con llave y el chef no pudiera meter los ingredientes.
Este problema puede deberse a varias razones, pero las más comunes son:
- Permisos de archivos incorrectos: La carpeta de caché no tiene los permisos adecuados (normalmente 755 o 775) para que el servidor pueda escribir en ella.
- Propietario del archivo incorrecto: El usuario del servidor web (por ejemplo,
www-datao el usuario de tu hosting) no es el dueño de esa carpeta. - Cambios en el servidor: Después de una migración, actualización o cambio de proveedor de hosting, los permisos se restablecen por defecto y dejan de funcionar.
Primeros Pasos: La Solución más Rápida (Desde el Panel de Control)
Antes de ponernos técnicos con archivos, vamos a probar la solución que funciona en el 90% de los casos. La mayoría de los paneles de control de hosting (cPanel, Plesk, Syspanel, etc.) tienen un botón mágico para esto.
### Regenerar y Vaciar la Caché desde el BackOffice
A veces, el error persiste porque hay un archivo corrupto en la caché. Forzar su regeneración puede ser suficiente.
- Accede al panel de administración de tu PrestaShop (tu dominio
/admin1234o similar). - Ve al menú Parámetros avanzados en el menú lateral izquierdo.
- Haz clic en Rendimiento.
- Busca la sección "Caché" y haz clic en el botón "Vaciar la caché" (suele tener un icono de papelera o una flecha circular).
- También puedes borrar manualmente el contenido de la carpeta
/var/cachey/cachea través del administrador de archivos de tu hosting.
Si tras esto el error sigue apareciendo, sigue leyendo. Vamos a la solución definitiva.
Solución Definitiva: Corregir Permisos y Propietario (Vía FTP o Administrador de Archivos)
Esta es la solución que arregla el problema de raíz. Vamos a cambiar los permisos de las carpetas para que el servidor pueda escribir en ellas.
### Opción A: Usando el Administrador de Archivos de tu Hosting
Esta es la forma más visual y fácil si no estás acostumbrado a usar FTP.
- Entra en el panel de control de tu hosting. Si usas Syspanel, recuerda que el acceso es a través del puerto 2106 (ejemplo:
https://tu-dominio.com:2106). - Busca la sección "Administrador de Archivos" o "Gestor de Archivos".
- Navega hasta la carpeta raíz de tu tienda (donde están las carpetas
admin,themes,img, etc.). - Busca la carpeta
var. Si no la ves, activa la opción de "Mostrar archivos ocultos". - Haz clic derecho sobre la carpeta
vary selecciona "Permisos" o "Cambiar permisos". - Introduce el valor 755 (o 775) en el campo numérico y asegúrate de marcar la casilla "Recursivo" (aplicar a todas las subcarpetas y archivos).
- Guarda los cambios.
- Repite el proceso con la carpeta
cache(si existe en la raíz) y con la carpeta/var/cache.
[WARNING]
¡IMPORTANTE! No pongas permisos 777 (escritura para todos). Aunque soluciona el error, es un grave riesgo de seguridad. Con 755 o 775 es más que suficiente.
### Opción B: Usando un Cliente FTP (FileZilla, etc.)
Si prefieres usar un programa externo, el proceso es similar.
- Conéctate a tu servidor FTP con tus credenciales.
- Navega a la raíz de tu instalación de PrestaShop.
- Localiza la carpeta
var. - Haz clic derecho sobre ella y selecciona "Permisos de archivo...".
- Escribe 755 en el campo numérico.
- Marca la casilla "Recursión en subdirectorios" y elige "Aplicar a todos los archivos y directorios".
- Acepta y espera a que el proceso termine.
Solución Avanzada: Cambiar el Propietario (CHOWN)
A veces, los permisos están bien, pero el error persiste. Esto ocurre cuando la carpeta pertenece a un usuario diferente al que ejecuta el servidor web. Es como si la nevera tuviera la puerta abierta, pero el chef no tuviera el uniforme adecuado para entrar en esa zona de la cocina.
Si tienes acceso a SSH (terminal), este es el comando definitivo. No te asustes, es solo una línea.
- Conéctate a tu servidor por SSH.
- Navega a la raíz de tu tienda.
- Ejecuta el siguiente comando para cambiar el propietario de las carpetas al usuario del servidor web (normalmente
www-data):
chown -R www-data:www-data var/
[INFO]
Si no sabes cuál es el usuario de tu servidor, puedes ejecutarps aux | grep apacheops aux | grep nginxpara verlo. En la mayoría de los casos eswww-data,nobodyonginx.
Si no tienes acceso SSH, contacta con tu proveedor de hosting y pídeles que ejecuten ese comando por ti. Es una petición muy común.
¿Por qué ocurre este error después de una actualización?
Este es un clásico. Cuando actualizas PrestaShop a una nueva versión, el instalador intenta modificar archivos y carpetas. Si los permisos de la carpeta var no son los correctos, el proceso falla y te deja este error.
Consejo: Antes de hacer cualquier actualización, asegúrate de que los permisos de las carpetas var, cache, img, themes y config sean los correctos. Esto evitará muchos dolores de cabeza.
Preguntas Frecuentes (FAQ)
### ¿Es peligroso este error para mi tienda?
No es peligroso en términos de pérdida de datos, pero sí es crítico. Impide que tu tienda funcione correctamente, ya que los clientes verán una página de error o una web en blanco. Además, ralentiza muchísimo la carga de tu sitio.
### ¿Puedo desactivar la caché para evitar el error?
Sí, pero es una solución temporal. Puedes ir a Parámetros avanzados > Rendimiento y poner la caché en "No". Esto hará que PrestaShop no intente escribir en la carpeta, pero tu web será mucho más lenta. Es un parche, no una solución.
### ¿Qué hago si sigo teniendo el error "cache prestashop writable" después de todo?
Si has seguido todos los pasos y el error persiste, es muy probable que el problema esté en la configuración del servidor. Te recomiendo contactar con tu proveedor de hosting, mencionando que necesitas que las carpetas var/cache tengan permisos de escritura para el usuario del servidor y que verifiquen si hay algún "open_basedir" bloqueando el acceso.
### ¿El error afecta a todas las versiones de PrestaShop?
Sí, es un error clásico que ha ocurrido en casi todas las versiones, desde la 1.6 hasta la 8.x. La solución es la misma en todos los casos.
Resumen y Prevención
Para solucionar el error cache prestashop, el resumen es simple:
- Prueba a vaciar la caché desde el backoffice.
- Si no funciona, cambia los permisos de la carpeta
varycachea 755 de forma recursiva. - Si el error continúa, cambia el propietario de la carpeta al usuario del servidor web (
www-data).
Para evitar que esto vuelva a pasar, te aconsejo:
- Anota los permisos correctos en un lugar seguro.
- Haz una copia de seguridad antes de actualizar.
- Si usas Syspanel, recuerda que el puerto de acceso es el 2106 para gestionar tus archivos si tu proveedor lo usa.
Espero que esta guía te haya sido de gran ayuda. Como verás, no era para tanto. Con un poco de paciencia y siguiendo estos pasos, tu tienda estará funcionando en pocos minutos. ¡Mucha suerte con tu negocio online!
