Geçersiz şablon dosyası - Sorunu 2.2.6'dan 2.2.7 veya 2.3'e yükseltin


16

2.2.6 sürümünü 2.2.7 sürümüne yükselttim, ancak web sitemde aşağıdaki hatayı gösteriyor.

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}

Web sitesi 2.6'dan 2.3'e yükseltirsem karşılaştığım aynı sorun.

Herhangi bir çözümü var mı?


bu yayın sorunumu çözdü.
Sanjay Jethva

Yanıtlar:


23

magento kurulumunuz 2.2.7 gibi magento'nun bazı versiyonlarından daha pencerelerde çalışıyorsa, dosya satıcısı / magento / framework / view / element / template / file / validator.php kodunu bununla değiştirmeliyiz .

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

ve şimdi magento uygulamasını yeniden yükleyin.


1
Mükemmel çalıştı. Çok teşekkürler. +1
Shoaib Munir

1
çok teşekkürler, günümü kurtarıyorsun. +1
Zeeshan Khuwaja

12

Magento örneğiniz Windows'ta çalıştığından, bu yalnızca yerel yüklemenizle ilgili bir sorun olmalıdır.

Yani bu geçici bir düzeltme olabilir. vendor\magento\framework\View\Element\Template\File\Validator.php

114 numaralı satıra gidin ve satır numarasını değiştirin ve aşağıdaki satırın yerini değiştirin

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

ile

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

Merhaba @tho, ben bu çözümü uyguladık ve şimdi web sitesi yükleniyor ama ana sayfa ve yönetici giriş boş sayfa gösterir.
Sanjay Jethva

1
Teşekkürler dostum. benim için çalıştı. +1
Shoaib Munir

0

Magento 2.2.6'yı Magento 2.3.0'a herhangi bir sorun olmadan yükseltmek için, devam eden projelerimizden birini Magento 2.2.6'dan 2.3.0'a yükselttim ve devam eden projenin işlevselliğini bozan hiçbir şey yok.

Magento komut satırını kullanarak kolayca yükseltebilirsiniz,

Eski sürümden en son sürüm Magento 2.3'e yükseltmek için dört adımı izlemeniz gerekir

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

Yalnızca Composer güncelleme komutunu kullanarak yükseltme yapamazsınız.

Adımların üstünde yardımcı olacağını umuyoruz.


Merhaba @Rakesh, ben php 7.1.7 sürümünü kullanıyorum ve Bay tho uygulanan çözüm ve web sitesi herhangi bir hata göstermiyor. Mağazam geliştirme modunda. ama boş sayfa gösteriliyor.
Sanjay Jethva

0

Benim durumumda registration.php dosyasında kullandığım bir modül olduğu için bu sorunu yaşadım

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

sorun " isset ($ file)? dirname ($ file): __DIR__" bu satırda "bu yüzden " "olarak değiştirdim __DIR__ve şimdi işe yarıyor, umarım yardımcı olur.


0

Oldukça eski bir sorun olduğunu biliyorum ve herkes çözümü zaten biliyor, ancak düzeltmeyle hızlı besteci tabanlı bir paket oluşturdum, sadece Magento kökünde çalıştırın:

besteci idealcode / magento2-windows uyumluluğu gerektirir

Umarım faydalı olacaktır.


0

Linux'ta da aynı hatayı aldım. Magento'yu geliştirici modunda çalıştırıyorsanız, bunun nedeni Magento'nun sembolik bağlantıları anlamadığıdır. Simge bağlantılarına izin vermek için aşağıdaki sql'yi çalıştırmanız yeterlidir:

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

O zaman koş: bin/magento cache:flush

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.