잘못된 템플릿 파일-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

magento 설치가 2.2.7에서와 같이 magento의 일부 버전보다 Windows에서 실행되는 경우 파일 vendor / 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 명령 줄을 사용하여 쉽게 업그레이드 할 수 있습니다.

이전 버전에서 최신 버전으로 Magento 2.3으로 업그레이드하려면 4 단계를 수행해야합니다.

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

내 경우에는이 문제가 있었는데 그것은 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 루트에서 실행되는 수정 사항이있는 빠른 작곡가 기반 패키지를 만들었습니다.

작곡가는 이상적인 코드 / 마 젠토 2- 윈도우 호환성이 필요합니다

도움이 되길 바랍니다.


0

리눅스에서 같은 오류가 발생했습니다. Magento를 개발자 모드에서 실행중인 경우 Magento가 심볼릭 링크를 이해하지 못하기 때문에 이런 일이 발생할 수 있습니다. 심볼릭 링크를 허용하려면 다음 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.