Tệp mẫu không hợp lệ - Sự cố nâng cấp từ 2.2.6 lên 2.2.7 hoặc 2.3


15

Tôi đã nâng cấp phiên bản 2.2.6 lên phiên bản 2.2.7 nhưng nó hiển thị lỗi bên dưới trong trang web của tôi.

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}

Vấn đề tương tự tôi gặp phải nếu tôi nâng cấp trang web từ 2.6 lên 2.3.

Có giải pháp nào không?


bài đăng này đã giải quyết vấn đề của tôi.
Sanjay Jethva

Câu trả lời:


19

nếu cài đặt magento của bạn đang chạy trên windows hơn trong một số phiên bản của magento như trong 2.2.7, chúng tôi phải thay thế mã của nhà cung cấp tệp / magento / framework / view / Element / template / file / validator.php bằng phiên bản này.

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

và bây giờ tải lại ứng dụng magento.


1
Làm việc hoàn hảo. Cảm ơn rất nhiều. +1
Shoaib Munir

1
cảm ơn rất nhiều, bạn tiết kiệm ngày của tôi +1
Zeeshan Khuwaja

12

Đây chỉ là một vấn đề về cài đặt cục bộ của bạn, vì phiên bản Magento của bạn đang chạy trên Windows.

Vì vậy, đây có thể là một sửa chữa tạm thời trong vendor\magento\framework\View\Element\Template\File\Validator.php

Chuyển đến số dòng 114 và thay đổi số dòng và thay thế bên dưới dòng

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

với

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

Xin chào @tho, tôi đã áp dụng giải pháp này và hiện trang web đang tải nhưng trang chủ và đăng nhập quản trị hiển thị trang trống.
Sanjay Jethva

1
Cảm ơn bạn đời. đã làm cho tôi. +1
Shoaib Munir

0

Để nâng cấp Magento 2.2.6 lên Magento 2.3.0 mà không gặp vấn đề gì, tôi vừa nâng cấp một trong những dự án đang thực hiện của chúng tôi từ Magento 2.2.6 lên 2.3.0 và không có gì phá vỡ chức năng của dự án đang diễn ra.

bạn có thể dễ dàng nâng cấp bằng dòng lệnh Magento,

Bạn cần làm theo bốn bước để nâng cấp từ phiên bản cũ lên phiên bản mới nhất Magento 2.3

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

Bạn không thể chỉ nâng cấp bằng cách sử dụng lệnh cập nhật Trình soạn thảo.

Hy vọng bạn sẽ hữu ích trên các bước.


Xin chào @Rakesh, tôi đang sử dụng phiên bản php 7.1.7 và áp dụng giải pháp và trang web của ông tho không hiển thị bất kỳ lỗi nào. cửa hàng của tôi đang trong chế độ phát triển. nhưng hiển thị trang trống.
Sanjay Jethva

0

Tôi gặp vấn đề này trong trường hợp của tôi, đó là một mô-đun mà tôi đã sử dụng trong tệp register.php

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

vấn đề là ở dòng này " isset ($ file)? dirname ($ file): __DIR__" vì vậy tôi đã thay đổi nó thành " __DIR__", và bây giờ nó hoạt động, tôi hy vọng nó có ích.


0

Tôi biết đó là vấn đề khá cũ và mọi người đều đã biết giải pháp, nhưng tôi đã tạo gói dựa trên trình soạn thảo nhanh với bản sửa lỗi, chỉ cần chạy trong root Magento của bạn:

nhà soạn nhạc yêu cầu tính tương thích lý tưởng / magento2-windows

Tôi hy vọng nó sẽ hữu ích.


0

Tôi đã gặp lỗi tương tự trên linux. Nếu bạn đang chạy Magento ở chế độ nhà phát triển, điều này có thể xảy ra do Magento không hiểu các liên kết tượng trưng. Để cho phép liên kết tượng trưng, ​​chỉ cần thực hiện sql sau:

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

Sau đó chạy: bin/magento cache:flush

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.