Cómo Solucionar el Error 'Exception: Local file is no longer allowed' en Magento 2 de Forma Definitiva

Cómo Solucionar el Error 'Exception: Local file is no longer allowed' en Magento 2 de Forma Definitiva
Anuncio relacionado

Introducción

El error Exception: Local file is no longer allowed en Magento 2 es un problema común de seguridad que suele aparecer tras actualizar la plataforma o al intentar importar datos, procesar catálogos o utilizar módulos que manipulan archivos directamente en el sistema de archivos del servidor. Por motivos de seguridad y para prevenir vulnerabilidades de tipo LFI (Local File Inclusion), Magento restringe ciertas operaciones con archivos locales si no están debidamente autorizadas o si las rutas no cumplen con las políticas estrictas del framework.

Causas Principales del Error

Este fallo se desencadena principalmente por las siguientes razones:

  • Intentar cargar un archivo desde una ruta absoluta que no está permitida por la clase Magento\Framework\Filesystem\Directory\Read.
  • Cambios en las políticas de seguridad implementadas en parches recientes o versiones actualizadas de Magento 2.
  • Configuraciones incorrectas en módulos de terceros que intentan leer archivos CSV o XML fuera de los directorios permitidos (var, pub, media).

Método 1: Validar y Utilizar Directorios Permitidos (Directory List)

La forma más recomendada por Adobe/Magento para solucionar este problema sin comprometer la seguridad del sitio es asegurar que tu código o el módulo afectado utilice los directorios permitidos por la instancia.

  1. Identifica el archivo y la línea de código que lanza la excepción revisando el archivo var/log/exception.log.
  2. Modifica la llamada para utilizar las instancias de directorio predefinidas de Magento en lugar de rutas absolutas crudas.
  3. Ejemplo de código correcto utilizando la clase DirectoryList:
use Magento\Framework\App\Filesystem\DirectoryList;

protected $directoryList;

public function __construct(DirectoryList $directoryList) {
    $this->directoryList = $directoryList;
}

public function getPath() {
    return $this->directoryList->getPath(DirectoryList::VAR_DIR);
}

Método 2: Aplicar la Solución a Través de Plugins o Sobrescritura en Módulos de Terceros

Si el error proviene de un módulo comercial o gratuito instalado en tu tienda:

  1. Contacta al desarrollador para obtener una versión compatible con la última versión de tu Magento 2.
  2. Si necesitas una solución rápida, puedes crear un plugin (interceptor) para interceptar el método de validación de archivos y permitir la ruta específica bajo tu propio riesgo de seguridad.
  3. Limpia la caché de Magento ejecutando el siguiente comando en tu terminal SSH: bin/magento cache:clean.

Conclusión

El error Exception: Local file is no longer allowed es una medida de protección de Magento que no debe ignorarse desactivando salv7aguardas globales. Siguiendo las buenas prácticas de desarrollo y utilizando los objetos de gestión de archivos del framework, podrás solucionar este inconveniente de raíz y mantener tu tienda e-commerce segura y funcional.

Anuncio
Seguir Leyendo

Guías y Soluciones Relacionadas

Windows Apps Juegos
Apps

Cómo Solucionar el Error de Pantalla Negra en OBS Studio Definitivamente

¿La captura de pantalla o de juego en OBS Studio muestra solo una pantalla negra? Te enseñamos las causas y los métodos definitivos para solucionarlo.

Leer guía completa →
Hardware

Cómo Solucionar el Error Código 43 en el Administrador de Dispositivos de Forma Definitiva

El error Código 43 indica que Windows ha detenido un dispositivo de hardware por problemas de funcionamiento. Descubre cómo solucionarlo definitivamente con estos métodos.

Leer guía completa →
Windows

Cómo Solucionar el Error ERR_CONNECTION_RESET en Windows Definitivamente

Aprende a resolver de forma definitiva el molesto error de conexión restablecida en tu navegador bajo entornos Windows. Sigue nuestros pasos sencillos para volver a navegar.

Leer guía completa →