Ich habe vor kurzem Magento neueste Version, dh Magento 2.3.0 in lokalen Wamp-Maschine mit installiert php 7.2.4
Installierte es über die Kommandozeilenschnittstelle.
Aber wenn ich müde bin zu rennen, zeige ich Fehler wie
Exception #0 (Magento\Framework\Exception\ValidatorException): Invalid template file: 'D:/wamp64/www/mage23/vendor/magento/module-theme/view/frontend/templates/page/js/require_js.phtml' in module: '' block's name: 'require.js'
magento2
magento2.3.0
MageLerner
quelle
quelle
Antworten:
Ja, das ist das Problem mit Windows. Windows verwendet "\" als Trennzeichen. Das Array "Verzeichnisse" enthält Einträge mit "/" als Trennzeichen, sodass die Prüfung immer fehlschlägt. Sie müssen dies also beheben, indem Sie das Trennzeichen in der Kerndatei ersetzen:
Die Funktion isPathInDirectories ersetzt den folgenden Code in der Funktion isPathInDirectories
quelle
Für mich besteht die Lösung darin, in die Datei \ vendor \ magento \ framework \ View \ Element \ Template \ File \ Validator.php zu wechseln und die folgende Funktionsdefinition wie folgt zu ersetzen:
PS: Dies ist ein Windows-spezifisches Problem.
quelle
Magento 2.3 unterstützt keine Windows. Meine Lösung finden Sie hier: Geben Sie hier die Linkbeschreibung ein
quelle
Es ist das Kernproblem von nicht nur Magento 2.3.0, sondern ich habe dieses Problem auch in Magento 2.2.7 gesehen. Verwenden Sie einfach das an die Methode übergebene Argument $ path, damit der Code unter Windows funktioniert, anstatt realpath zu verwenden
Gehen Sie zu Pfad /vendor/magento/framework/View/Element/Template/File/Validator.php und anstelle der Zeile
verwenden
Oder folgen Sie dieser Diskussion https://github.com/magento/magento2/issues/19480
quelle
In Magento 2.2.9 ersetzen Sie den Funktionscode /vendor/magento/framework/View/Element/Template/File/Validator.php isPathInDirectories durch diesen Code
quelle
Dies geschieht wahrscheinlich bei der Entwicklung unter Windows-System.
Gehen Sie zu Zeile 140 in der Datei Path /vendor/magento/framework/View/Element/Template/File/Validator.php. Ersetzen Sie diesen Zeilencode
Mit
Achten Sie auf diese Codezeile
Dies wird wahrscheinlich wegen der PHP-Backslash-Landschaft nicht funktionieren. Sie müssen einen doppelten Backslash ausführen, um PHP explizit mitzuteilen, dass es sich hier nicht um eine neue Zeile handelt, sondern um einen Backslash.
quelle
Bitte beachten Sie, dass es ein doppelter Schrägstrich sein sollte, dh "\\"
quelle
Wie bereits erwähnt, ist das Problem die Windows-Kompatibilität. Ich würde jedoch empfehlen, es etwas anders zu ändern, damit es auch bei der Migration von Systemen funktioniert, z. B. für die lokale Entwicklung unter Windows und die spätere Bereitstellung auf einem Linux-Server. Damit Sie den Pfad nur anpassen, wenn Sie unter Windows arbeiten.
Im
im
ersetzen
mit:
a) PHP> = 7,2:
b) PHP <7,2:
quelle