Недійсний файл шаблону - оновлення випуску з 2.2.6 до 2.2.7 або 2.3


16

Я оновив версію 2.2.6 до версії 2.2.7, але її помилка відображається нижче на моєму веб-сайті.

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}

З тією ж проблемою, з якою я стикаюся, якщо я модернізую веб-сайт з 2.6 до 2.3.

Чи є рішення?


ця публікація вирішила мою проблему.
Санджай Джетва

Відповіді:


22

якщо ваша установка magento працює на Windows, ніж у деяких версіях magento, як, наприклад, у 2.2.7, ми повинні замінити на це код файлу vendor / magento / frame / view / element / template / file / validator.php .

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

а тепер перезавантажте програму magento.


1
Працювали чудово. Дуже дякую. +1
Шойб Мунір

1
дякую багато, ти врятуєш мій день. +1
Зеешан Хувая,

12

Це має бути лише проблема вашої локальної установки, оскільки ваш екземпляр Magento працює в Windows.

Тож це може бути тимчасовим виправленням vendor\magento\framework\View\Element\Template\File\Validator.php

Перейдіть до рядка 114 та змініть номер рядка та замініть його нижче рядка

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

з

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

Привіт @tho, я застосував це рішення, і зараз веб-сайт завантажується, але домашня сторінка та вхід адміністратора показують порожню сторінку.
Санджай Джетва

1
Дякую, друже. працював на мене. +1
Шойб Мунір

0

Для оновлення Magento 2.2.6 до Magento 2.3.0 без жодних проблем я щойно оновив один із наших поточних проектів з Magento 2.2.6 до 2.3.0 і нічого не порушує функціональність поточного проекту.

ви можете легко оновити, використовуючи командний рядок Magento,

Вам потрібно виконати чотири кроки, щоб перейти від старій версії до останньої версії Magento 2.3

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

Ви не можете просто оновити, використовуючи лише команду оновлення Composer.

Сподіваємось, вам будуть корисні наведені вище кроки.


Привіт @Rakesh, я використовую php версії 7.1.7 і застосовано рішення Mr. tho і веб-сайт не відображає помилок. мій магазин знаходиться в режимі розробки. але показує порожню сторінку.
Санджай Джетва

0

У мене була ця проблема, у моєму випадку це був модуль, який я використовував у файлі registration.php

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

проблема в цьому рядку " isset ($ file)? dirname ($ file): __DIR__", тому я змінив його на " __DIR__", і тепер він працює, я сподіваюся, що це допомагає.


0

Я знаю, що це досить стара проблема, і всі вже знають рішення, але я створив швидкий композиційний пакет із виправленням, просто запустіть у вашому Magento root:

композитор вимагає сумісності ідеального коду / magento2-windows

Сподіваюся, це стане в нагоді.


0

Я отримав таку ж помилку на Linux. Якщо ви запускаєте Magento в режимі розробника, це може статися, оскільки Magento не розуміє символьних посилань. Щоб дозволити посилання, просто виконайте такі sql:

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

Потім запустіть: bin/magento cache:flush

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.