ไฟล์เทมเพลตไม่ถูกต้อง - ปัญหาการอัปเกรดจาก 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

มีวิธีแก้ไขไหม?


โพสต์นี้ได้แก้ไขปัญหาของฉัน
Sanjay Jethva

คำตอบ:


22

หากการติดตั้งวีโอไอพีของคุณทำงานบน windows มากกว่าในบางเวอร์ชั่นของวีโอไอพีเช่นใน 2.2.7 เราต้องแทนที่รหัสของผู้จำหน่ายไฟล์/ magento / framework / 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
Shoaib Munir

1
ขอบคุณมากคุณช่วยชีวิตฉันไว้ +1
Zeeshan Khuwaja

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 ฉันได้ใช้วิธีนี้และตอนนี้เว็บไซต์กำลังโหลด แต่หน้าแรกและเข้าสู่ระบบผู้ดูแลระบบแสดงหน้าว่าง
Sanjay Jethva

1
ขอบคุณเพื่อน ทำงานให้ฉัน +1
Shoaib Munir

0

สำหรับการอัพเกรด Magento 2.2.6 เป็น Magento 2.3.0 โดยไม่มีปัญหาใด ๆ ฉันเพิ่งจะอัพเกรดหนึ่งในโครงการต่อเนื่องของเราจาก Magento 2.2.6 เป็น 2.3.0 และไม่มีการหยุดการทำงานของโครงการต่อเนื่อง

คุณสามารถอัพเกรดได้ง่ายโดยใช้ Magento command line

คุณต้องทำตามสี่ขั้นตอนเพื่ออัพเกรดจากเวอร์ชั่นเก่ากว่าไปเป็นเวอร์ชั่นล่าสุด Magento 2.3

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

คุณไม่สามารถอัพเกรดโดยใช้คำสั่ง Composer update เท่านั้น

หวังว่าคุณจะเป็นประโยชน์ข้างต้นขั้นตอน


สวัสดี @Rakesh ฉันใช้ php เวอร์ชัน 7.1.7 และใช้วิธีแก้ปัญหา Mr. tho และเว็บไซต์จะไม่แสดงข้อผิดพลาดใด ๆ ร้านค้าของฉันอยู่ในโหมดการพัฒนา แต่แสดงหน้าว่าง
Sanjay Jethva

0

ฉันมีปัญหานี้ในกรณีของฉันมันเป็นโมดูลที่ฉันใช้ในไฟล์ register.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

ฉันรู้ว่ามันค่อนข้างเป็นปัญหาและทุกคนรู้วิธีแก้ปัญหาอยู่แล้ว แต่ฉันสร้างแพคเกจที่ใช้นักแต่งเพลงอย่างรวดเร็วพร้อมการแก้ไขเพียงทำงานในรูทวีโอไอพีของคุณ:

นักแต่งเพลงต้องการ idealcode / magento2-windows-compatible

ฉันหวังว่ามันจะมีประโยชน์


0

ฉันพบข้อผิดพลาดเดียวกันกับ linux หากคุณใช้ Magento ในโหมดผู้พัฒนาอาจเกิดขึ้นเนื่องจาก Magento ไม่เข้าใจ symlink หากต้องการอนุญาต symlink ให้เรียกใช้ sql ต่อไปนี้:

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

จากนั้นเรียกใช้: bin/magento cache:flush

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.