File template tidak valid - Tingkatkan masalah dari 2.2.6 ke 2.2.7 atau 2.3

15

Saya telah memutakhirkan versi 2.2.6 ke versi 2.2.7 tetapi menunjukkan kesalahan di bawah ini di situs web saya.

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}

Masalah yang sama yang saya hadapi jika saya meningkatkan situs web dari 2,6 menjadi 2,3.

Apakah ada solusi?

Sanjay Jethva
sumber
posting ini telah menyelesaikan masalah saya.
Sanjay Jethva

Jawaban:

21

jika instalasi magento Anda berjalan di windows daripada di magento beberapa versi seperti di 2.2.7 kita harus mengganti kode vendor file / magento / framework / view / element / template / file / validator.php dengan ini.

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

dan sekarang memuat ulang aplikasi magento.

Naveen Jain
sumber
1
Bekerja dengan sempurna. Terima kasih banyak. +1
Shoaib Munir
1
terima kasih banyak, Anda menghemat hari saya. +1
Zeeshan Khuwaja
12

Ini seharusnya hanya masalah instalasi lokal Anda, karena instance Magento Anda berjalan pada Windows.

Jadi ini bisa menjadi perbaikan sementara di vendor\magento\framework\View\Element\Template\File\Validator.php

Pergi ke nomor baris 114 dan ubah nomor baris dan ganti baris di bawah ini

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

dengan

$filename = str_replace('\\', '/', $this->fileDriver->getRealPath($filename));
torhoehn
sumber
Halo @tho, saya sudah menerapkan solusi ini dan sekarang situs web sedang memuat tetapi halaman rumah dan login admin menunjukkan halaman kosong.
Sanjay Jethva
1
Terima kasih sobat. bekerja untukku. +1
Shoaib Munir
0

Untuk Meng-upgrade Magento 2.2.6 ke Magento 2.3.0 tanpa masalah, saya baru saja meningkatkan salah satu proyek kami yang sedang berlangsung dari Magento 2.2.6 ke 2.3.0 dan tidak ada yang merusak fungsi proyek yang sedang berlangsung.

Anda dapat dengan mudah meningkatkan menggunakan baris perintah Magento,

Anda perlu mengikuti empat langkah untuk meningkatkan versi dari versi yang lebih lama ke versi terbaru Magento 2.3

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

Anda tidak bisa memutakhirkan hanya menggunakan perintah pembaruan Komposer.

Semoga Anda bisa membantu langkah-langkah di atas.

Rakesh Jesadiya
sumber
Halo @Rakesh, saya menggunakan php versi 7.1.7 dan menerapkan solusi Mr. tho dan situs web tidak menunjukkan kesalahan. toko saya dalam mode pengembangan. tetapi menunjukkan halaman kosong.
Sanjay Jethva
0

Saya memiliki masalah ini dalam kasus saya itu adalah modul yang saya gunakan dalam file registrasi.php

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

masalahnya ada di baris ini " isset ($ file)? dirname ($ file): __DIR__" jadi saya mengubahnya ke " __DIR__", dan sekarang berfungsi, saya harap ini membantu.

Raul Encinas
sumber
0

Saya tahu ini masalah yang cukup lama dan semua orang sudah tahu solusinya, tetapi saya membuat paket berbasis komposer cepat dengan perbaikan, jalankan saja di root Magento Anda:

komposer memerlukan kompatibilitas kode-ideal / magento2-windows

Semoga bermanfaat.

Evgeny Levinsky
sumber
0

Saya mendapat kesalahan yang sama di linux. Jika Anda menjalankan Magento dalam mode pengembang, ini mungkin terjadi karena Magento tidak mengerti symlink. Untuk mengizinkan symlink, cukup jalankan sql berikut:

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

Lalu lari: bin/magento cache:flush

HoaiNP
sumber