Niedawno zainstalowałem najnowszą wersję Magento tj. Magento 2.3.0 na lokalnej maszynie wamp z php 7.2.4
Zainstalowałem go za pomocą interfejsu wiersza poleceń.
Ale kiedy jestem zmęczony uruchomieniem, pokaż mi błąd
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
źródło
źródło
Odpowiedzi:
Tak, to jest problem z Windows. Windows używa „\” jako separatora, tablica „katalogi” zawiera wpisy z „/” jako separatorem, więc sprawdzanie zawsze się nie powiedzie. Musisz to naprawić, zastępując separator w pliku podstawowym:
funkcja isPathInDirectories zamień poniższy kod w funkcji isPathInDirectories
źródło
DIRECTORY_SEPARATOR
tak jak reszta świata i nie mają tego konkretnego problemu, który wydaje się jedyną rzeczą, która działa w systemie Windows?Dla mnie rozwiązaniem było przejście do pliku \ vendor \ magento \ framework \ View \ Element \ Template \ File \ Validator.php i zastąpienie poniższej definicji funkcji, jak poniżej:
PS: Jest to problem specyficzny dla systemu Windows.
źródło
Magento 2.3 nie obsługuje systemu Windows. Moje rozwiązanie znajdziesz tutaj: wpisz opis linku tutaj
źródło
Jest to podstawowy problem nie tylko Magento 2.3.0, ale również ten problem pojawiłem się w Magento 2.2.7. Aby kod działał w systemie Windows zamiast ścieżki rzeczywistej, wystarczy użyć argumentu $ path przekazanego do metody
Przejdź do ścieżki /vendor/magento/framework/View/Element/Template/File/Validator.php i zamiast wiersza
posługiwać się
Lub śledź tę dyskusję https://github.com/magento/magento2/issues/19480
źródło
W Magento 2.2.9 zamień /vendor/magento/framework/View/Element/Template/File/Validator.php kod funkcji isPathInDirectories tym kodem
źródło
Prawdopodobnie dzieje się tak podczas programowania w systemie Windows.
Przejdź do wiersza 140 w pliku Ścieżka /vendor/magento/framework/View/Element/Template/File/Validator.php Zamień ten kod wiersza
Z
Uważaj na ten wiersz kodu
Prawdopodobnie nie zadziała to z powodu phs backslash php. musisz zrobić podwójny odwrotny ukośnik, aby wyraźnie powiedzieć PHP, że nie ma tu do czynienia z nową linią, ale odwrotnym ukośnikiem.
źródło
Proszę zobaczyć, że powinien to być podwójny ukośnik, tzn. „\\”
źródło
Jak wspomniano, problemem jest zgodność z systemem Windows. Poleciłbym jednak zmienić to nieco inaczej, aby działało nawet podczas migracji systemów, np. Do lokalnego programowania w systemie Windows, a później do wdrożenia na serwerze Linux. Tak więc tylko w przypadku pracy w systemie Windows dostosujesz ścieżkę.
W
w
zastąpić
z:
a) PHP> = 7.2:
b) PHP <7.2:
źródło