無効なテンプレートファイル-2.2.6から2.2.7または2.3へのアップグレードの問題


15

2.2.6バージョンを2.2.7バージョンにアップグレードしましたが、Webサイトでエラーが表示されます。

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にアップグレードすると、同じ問題が発生します。

解決策はありますか?


この投稿は私の問題を解決しました。
サンジェイジェトバ

回答:


19

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
ジーシャンクワジャ

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、私はこのソリューションを適用し、現在ウェブサイトはロードされていますが、ホームページと管理者ログインは空白ページを表示します。
サンジェイジェスバ

1
どうも。私のために働いた。+1
Shoaib Munir

0

Magento 2.2.6を問題なくMagento 2.3.0にアップグレードするには、進行中のプロジェクトの1つを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ソリューションを適用しており、ウェブサイトにはエラーが表示されていません。私のストアは開発モードです。ただし、空白ページが表示されます。
サンジェイジェトバ

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のルートで実行します:

composerにはidealcode / magento2-windows-compatibilityが必要です

役に立つことを願っています。


0

Linuxでも同じエラーが発生しました。開発者モードで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.