PrestaShop

Script PHP para Borrar la Caché de PrestaShop (Sin Back Office)

Por Juanma
PrestaShopCachePHPHostingLimpiaCachéBackOfficeDesarrollo

Aprende a crear un script PHP (clear_cache.php) seguro y externo para limpiar la caché de PrestaShop. Solución rápida para errores y acceso denegado

Script PHP para Borrar la Caché de PrestaShop (Sin Back Office)

💡 Cómo crear un script para borrar la caché de PrestaShop desde tu hosting 🛠️

Limpiar la caché de PrestaShop se hace normalmente desde el Back Office, pero si te encuentras con errores, una pantalla en blanco, problemas con módulos o falta de acceso, un script PHP externo es la mejor solución de emergencia.


¿Qué hace este script?

Este archivo PHP (clear_cache.php) está diseñado para simular la acción de "Borrar caché" del Back Office, pero accesible desde una URL externa.

  • 🔐 Protege el acceso usando un token de seguridad.
  • 📂 Localiza la carpeta var/cache.
  • 🗑️ Elimina de forma recursiva los subdirectorios internos (como prod y dev).
  • 🛠️ Vuelve a crearlos vacíos con los permisos correctos.
  • Muestra un mensaje de éxito o error.

Script Completo: clear_cache.php

Copia este código y guárdalo como clear_cache.php o descarga este zip

<?php
// clear_cache.php
// ¡ADVERTENCIA! PROTEGER ESTE SCRIPT antes de usarlo en producción

if ($_GET['token'] !== 'TU_TOKEN_SEGURO') {
    die('Acceso denegado');
}

$cacheDir = __DIR__ . '/var/cache';

/**
 * Función recursiva para eliminar un directorio y todo su contenido.
 */
function rrmdir($dir) {
    if (!is_dir($dir)) return;
    $objects = scandir($dir);
    
    foreach ($objects as $object) {
        if ($object === "." || $object === "..") continue;
        $path = $dir . DIRECTORY_SEPARATOR . $object;
        
        if (is_dir($path)) {
            rrmdir($path); // Recursión para subdirectorios
        } else {
            unlink($path); // Eliminar archivos
        }
    }
    rmdir($dir); // Eliminar el directorio vacío
}

if (is_dir($cacheDir)) {
    // Vaciar y recrear cada subcarpeta dentro de var/cache
    foreach (glob($cacheDir . '/*', GLOB_ONLYDIR) as $subDir) {
        rrmdir($subDir); // Borra la carpeta y su contenido
        mkdir($subDir, 0755, true); // La vuelve a crear
    }
    echo "Caché de PrestaShop eliminada correctamente.";
} else {
    echo "No se encontró el directorio de caché: $cacheDir";
}

🔍 Explicación del Código

1. Protección mediante Token

if ($_GET['token'] !== 'TU_TOKEN_SEGURO') {
    die('Acceso denegado');
}

El script solo se ejecuta si se accede con la clave correcta.

Ejemplo de acceso:

https://tudominio.com/clear_cache.php?token=TU_TOKEN_SEGURO

2. Ruta a la Carpeta de Caché

$cacheDir = __DIR__ . '/var/cache';

__DIR__ apunta al directorio donde está el script. Por defecto, debe estar en la raíz de PrestaShop.

3. Borrado y Recreación

foreach (glob($cacheDir . '/*', GLOB_ONLYDIR) as $subDir) {
    rrmdir($subDir);
    mkdir($subDir, 0755, true);
}

Vacía todas las carpetas internas de var/cache y las recrea.


⚙️ Instrucciones de Uso e Instalación

  • Crear el archivo: Copia el código y guárdalo como clear_cache.php.
  • Subir al servidor: Súbelo a la raíz principal de tu tienda PrestaShop.
  • Modificar el token: Cambia TU_TOKEN_SEGURO por una clave difícil de adivinar.
  • Ejecutar el script: Visita la URL con tu token para borrar la caché.

⚠️ Precauciones Importantes de Seguridad

  • Nunca uses un token simple.
  • Elimina o renombra el script cuando ya no sea necesario.
  • No lo dejes en directorios accesibles sin protección.