Ungültige Vorlagendatei - Upgrade-Problem von 2.2.6 auf 2.2.7 oder 2.3


15

Ich habe die Version 2.2.6 auf die Version 2.2.7 aktualisiert, aber auf meiner Website wird der folgende Fehler angezeigt.

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}

Dasselbe Problem tritt auf, wenn ich die Website von 2.6 auf 2.3 aktualisiere.

Gibt es eine Lösung?


Dieser Beitrag hat mein Problem behoben.
Sanjay Jethva

Antworten:


19

Wenn Ihre Magento-Installation unter Windows ausgeführt wird, müssen Sie bei einigen Versionen wie in 2.2.7 den Code der Datei vendor / magento / framework / view / element / template / file / validator.php durch diesen ersetzen .

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

und lade jetzt die Magento-Anwendung neu.


1
Hat perfekt funktioniert. Vielen Dank. +1
Shoaib Munir

1
Vielen Dank, Sie retten meinen Tag. +1
Zeeshan Khuwaja

12

Dies sollte nur ein Problem Ihrer lokalen Installation sein, da Ihre Magento-Instanz unter Windows ausgeführt wird.

Dies könnte also eine vorübergehende Lösung sein vendor\magento\framework\View\Element\Template\File\Validator.php

Gehen Sie zu Zeilennummer 114 und ändern Sie die Zeilennummer und ersetzen Sie sie unter der Zeile

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

mit

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

Hallo @tho, ich habe diese Lösung angewendet und jetzt wird die Website geladen, aber die Startseite und der Administrator-Login zeigen eine leere Seite.
Sanjay Jethva

1
Danke Kumpel. arbeitete für mich. +1
Shoaib Munir

0

Für ein problemloses Upgrade von Magento 2.2.6 auf Magento 2.3.0 habe ich gerade eines unserer laufenden Projekte von Magento 2.2.6 auf 2.3.0 aktualisiert und nichts stört die Funktionalität des laufenden Projekts.

Sie können einfach mit der Magento-Kommandozeile upgraden,

Sie müssen vier Schritte ausführen, um ein Upgrade von einer älteren Version auf die neueste Version Magento 2.3 durchzuführen

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

Sie können ein Upgrade nicht einfach nur mit dem Composer-Befehl update durchführen.

Hoffe, Sie werden über Schritte hilfreich sein.


Hallo @Rakesh, ich benutze PHP-Version 7.1.7 und habe Mr. tho angewendet. Die Lösung und die Website zeigen keinen Fehler an. Mein Geschäft befindet sich im Entwicklungsmodus. aber zeigt leere Seite.
Sanjay Jethva

0

Ich hatte dieses Problem in meinem Fall, es war ein Modul, das ich in der registration.php-Datei verwendete

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

Das Problem ist in dieser Zeile " isset ($ file)? dirname ($ file): __DIR__", also habe ich es in " __DIR__" geändert , und jetzt funktioniert es, ich hoffe, es hilft.


0

Ich weiß, dass es ein ziemlich altes Problem ist und dass jeder die Lösung bereits kennt, aber ich habe ein schnelles Composer-basiertes Paket mit Fix erstellt. Führen Sie es einfach in Ihrem Magento-Stammverzeichnis aus:

composer benötigen idealcode / magento2-windows-kompatibilität

Ich hoffe es wird nützlich sein.


0

Ich habe den gleichen Fehler unter Linux. Wenn Sie Magento im Entwicklermodus ausführen, kann dies passieren, weil Magento Symlinks nicht versteht. Um Symlinks zuzulassen, führen Sie einfach den folgenden SQL-Code aus:

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

Dann renne: bin/magento cache:flush

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.