Archivo de plantilla no válido: problema de actualización de 2.2.6 a 2.2.7 o 2.3

15

He actualizado la versión 2.2.6 a la versión 2.2.7 pero se muestra el siguiente error en mi sitio web.

1 exception(s):
Exception #0 (Magento\Framework\Exception\ValidatorException): Invalid template file: 'C:/xampp2/htdocs/magento2/demo1/vendor/magento/module-theme/view/frontend/templates/page/js/require_js.phtml' in module: '' block's name: 'require.js'

Exception #0 (Magento\Framework\Exception\ValidatorException): Invalid template file: 'C:/xampp2/htdocs/magento2/demo1/vendor/magento/module-theme/view/frontend/templates/page/js/require_js.phtml' in module: '' block's name: 'require.js'
#0 C:\xampp2\htdocs\magento2\demo1\vendor\magento\framework\View\Element\Template.php(300): Magento\Framework\View\Element\Template->fetchView('C:/xampp2/htdoc...')
#1 C:\xampp2\htdocs\magento2\demo1\vendor\magento\framework\View\Element\AbstractBlock.php(667): Magento\Framework\View\Element\Template->_toHtml()
#2 C:\xampp2\htdocs\magento2\demo1\vendor\magento\framework\View\Result\Page.php(248): Magento\Framework\View\Element\AbstractBlock->toHtml()
#3 C:\xampp2\htdocs\magento2\demo1\vendor\magento\framework\View\Result\Layout.php(170): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor))
#4 C:\xampp2\htdocs\magento2\demo1\vendor\magento\framework\Interception\Interceptor.php(58): Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#5 C:\xampp2\htdocs\magento2\demo1\vendor\magento\framework\Interception\Interceptor.php(138): Magento\Framework\View\Result\Page\Interceptor->___callParent('renderResult', Array)
#6 C:\xampp2\htdocs\magento2\demo1\vendor\magento\framework\Interception\Interceptor.php(153): Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor))
#7 C:\xampp2\htdocs\magento2\demo1\generated\code\Magento\Framework\View\Result\Page\Interceptor.php(130): Magento\Framework\View\Result\Page\Interceptor->___callPlugins('renderResult', Array, Array)
#8 C:\xampp2\htdocs\magento2\demo1\vendor\magento\framework\App\Http.php(139): Magento\Framework\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#9 C:\xampp2\htdocs\magento2\demo1\generated\code\Magento\Framework\App\Http\Interceptor.php(24): Magento\Framework\App\Http->launch()
#10 C:\xampp2\htdocs\magento2\demo1\vendor\magento\framework\App\Bootstrap.php(257): Magento\Framework\App\Http\Interceptor->launch()
#11 C:\xampp2\htdocs\magento2\demo1\index.php(39): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))
#12 {main}

Mismo problema al que me enfrento si actualizo el sitio web de 2.6 a 2.3.

¿Hay alguna solución?

Sanjay Jethva
fuente
Esta publicación ha resuelto mi problema.
Sanjay Jethva

Respuestas:

21

si su instalación de magento se ejecuta en Windows que en algunas versiones de magento como en 2.2.7, tenemos que reemplazar el código del archivo vendor / magento / framework / view / element / template / file / validator.php con esto.

protected function isPathInDirectories($path, $directories)
{
    $realPath = str_replace('\\', '/', $this->fileDriver->getRealPath($path));
    if (!is_array($directories)) {
        $directories = (array)$directories;
    }

    foreach ($directories as $directory) {
        if (0 === strpos($realPath, $directory)) {
            return true;
        }
    }
    return false;
}

y ahora vuelve a cargar la aplicación magento.

Naveen Jain
fuente
1
Funcionó perfectamente. Muchas gracias. +1
Shoaib Munir
1
muchas gracias, me salvas el día. +1
Zeeshan Khuwaja
12

Esto debería ser solo un problema de su instalación local, porque su instancia de Magento se ejecuta en Windows.

Entonces esto podría ser una solución temporal en vendor\magento\framework\View\Element\Template\File\Validator.php

Vaya a la línea número 114 y cambie el número de línea y reemplace debajo de la línea

$filename = str_replace('\\', '/', $filename);

con

$filename = str_replace('\\', '/', $this->fileDriver->getRealPath($filename));
Torhoehn
fuente
Hola @tho, he aplicado esta solución y ahora el sitio web se está cargando, pero la página de inicio y el inicio de sesión de administrador muestran una página en blanco.
Sanjay Jethva
1
Gracias amigo. trabajó para mi. +1
Shoaib Munir
0

Para actualizar Magento 2.2.6 a Magento 2.3.0 sin ningún problema, acabo de actualizar uno de nuestros proyectos en curso de Magento 2.2.6 a 2.3.0 y nada interrumpe la funcionalidad del proyecto en curso.

puedes actualizar fácilmente usando la línea de comando de Magento,

Debe seguir cuatro pasos para actualizar de la versión anterior a la última versión Magento 2.3

For upgrade to Magento 2.3 You must require PHP 7.1.3+ or PHP 7.2.

No puede simplemente actualizar usando solo el comando de actualización de Composer.

Espero que sea útil por encima de los pasos.

Rakesh Jesadiya
fuente
Hola @Rakesh, estoy usando php versión 7.1.7 y apliqué Mr. Tho solución y el sitio web no muestra ningún error. Mi tienda está en modo de desarrollo. pero mostrando página en blanco.
Sanjay Jethva
0

Tuve este problema en mi caso, era un módulo que utilicé en el archivo registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Vendor_Module',
    isset($file) ? dirname($file) : __DIR__
);

el problema está en esta línea " isset ($ file)? dirname ($ file): __DIR__", así que lo cambié a " __DIR__", y ahora funciona, espero que ayude.

Raul Encinas
fuente
0

Sé que es un problema bastante antiguo y todos ya conocen la solución, pero creé un paquete rápido basado en el compositor con solución, solo ejecute en su raíz Magento:

El compositor requiere la compatibilidad idealcode / magento2-windows

Espero que te sea útil.

Evgeny Levinsky
fuente
0

Obtuve el mismo error en Linux. Si está ejecutando Magento en modo desarrollador, esto puede suceder porque Magento no entiende los enlaces simbólicos. Para permitir enlaces simbólicos, simplemente ejecute el siguiente sql:

update `core_config_data` set `value`='1' where `path`='dev/template/allow_symlink';

Entonces corre: bin/magento cache:flush

HoaiNP
fuente