Fichier de modèle non valide - Problème de mise à niveau de 2.2.6 vers 2.2.7 ou 2.3


15

J'ai mis à niveau la version 2.2.6 vers la version 2.2.7 mais son erreur ci-dessous s'affiche sur mon site 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}

Même problème auquel je suis confronté si je mets à jour le site Web de 2.6 à 2.3.

y-a-t'il une solution?


ce message a résolu mon problème.
Sanjay Jethva

Réponses:


21

si votre installation magento fonctionne sur Windows que dans certaines versions de magento comme dans 2.2.7, nous devons remplacer le code du fournisseur de fichiers / magento / framework / view / element / template / file / validator.php par ceci.

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;
}

et rechargez maintenant l'application magento.


1
Fonctionne parfaitement. Merci beaucoup. +1
Shoaib Munir

1
merci beaucoup, vous sauvez ma journée. +1
Zeeshan Khuwaja

12

Cela ne devrait être qu'un problème de votre installation locale, car votre instance Magento s'exécute sur Windows.

Cela pourrait donc être une solution temporaire dans vendor\magento\framework\View\Element\Template\File\Validator.php

Allez à la ligne numéro 114 et changez le numéro de ligne et remplacez la ligne ci-dessous

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

avec

$filename = str_replace('\\', '/', $this->fileDriver->getRealPath($filename));

Bonjour @tho, j'ai appliqué cette solution et maintenant le site Web se charge mais la page d'accueil et la connexion administrateur affichent une page vierge.
Sanjay Jethva

1
Merci mon pote. travaillé pour moi. +1
Shoaib Munir

0

Pour mettre à niveau Magento 2.2.6 vers Magento 2.3.0 sans aucun problème, je viens de mettre à niveau l'un de nos projets en cours de Magento 2.2.6 vers 2.3.0 et rien ne rompt la fonctionnalité du projet en cours.

vous pouvez facilement mettre à niveau en utilisant la ligne de commande Magento,

Vous devez suivre quatre étapes pour passer de l'ancienne version à la dernière version Magento 2.3

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

Vous ne pouvez pas simplement mettre à niveau à l'aide de la commande de mise à jour de Composer uniquement.

J'espère que vous serez utile au-dessus des étapes.


Bonjour @Rakesh, j'utilise la version 7.1.7 de php et j'ai appliqué la solution de M. tho et le site Web ne montre aucune erreur. mon magasin est en mode développement. mais montrant une page vierge.
Sanjay Jethva

0

J'ai eu ce problème dans mon cas c'était un module que j'ai utilisé dans le fichier registration.php

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

le problème est dans cette ligne " isset ($ file)? dirname ($ file): __DIR__" donc je l'ai changé en " __DIR__", et maintenant ça marche, j'espère que ça aide.


0

Je sais que c'est un problème assez ancien et tout le monde connaît déjà la solution, mais j'ai créé un package rapide basé sur le compositeur avec correctif, exécutez simplement dans votre racine Magento:

le compositeur nécessite la compatibilité idealcode / magento2-windows

J'espère que ce sera utile.


0

J'ai eu la même erreur sur Linux. Si vous exécutez Magento en mode développeur, cela peut se produire car Magento ne comprend pas les liens symboliques. Pour autoriser les liens symboliques, exécutez simplement le sql suivant:

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

Exécutez ensuite: bin/magento cache:flush

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.