File modello non valido - Aggiornamento problema da 2.2.6 a 2.2.7 o 2.3


15

Ho aggiornato la versione 2.2.6 alla versione 2.2.7, ma mostra l'errore di seguito nel mio sito 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}

Stesso problema che sto affrontando se aggiorno il sito Web da 2.6 a 2.3.

C'è qualche soluzione?


questo post ha risolto il mio problema.
Sanjay Jethva,

Risposte:


21

se la tua installazione di Magento è in esecuzione su Windows rispetto a alcune versioni di Magento come nella 2.2.7, dobbiamo sostituire il codice del fornitore di file / magento / framework / view / element / template / file / validator.php con questo.

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

e ora ricaricare l'applicazione magento.


1
Ha funzionato perfettamente. Molte grazie. +1
Shoaib Munir

1
grazie mille, mi hai salvato la giornata. +1
Zeeshan Khuwaja,

12

Questo dovrebbe essere solo un problema dell'installazione locale, perché l'istanza Magento è in esecuzione su Windows.

Quindi questa potrebbe essere una soluzione temporanea vendor\magento\framework\View\Element\Template\File\Validator.php

Vai al numero di riga 114 e modifica il numero di riga e sostituisci sotto la riga

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

con

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

Ciao @tho, ho applicato questa soluzione e ora il sito Web si sta caricando ma la home page e il login dell'amministratore mostrano una pagina vuota.
Sanjay Jethva,

1
Grazie compagno. ha funzionato per me. +1
Shoaib Munir

0

Per aggiornare Magento 2.2.6 a Magento 2.3.0 senza alcun problema, ho appena aggiornato uno dei nostri progetti in corso da Magento 2.2.6 a 2.3.0 e nulla interrompe la funzionalità del progetto in corso.

puoi facilmente aggiornare usando la riga di comando di Magento,

È necessario seguire quattro passaggi per aggiornare dalla versione precedente all'ultima versione Magento 2.3

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

Non puoi semplicemente aggiornare usando solo il comando di aggiornamento Composer.

Spero che sarai utile sopra i passaggi.


Ciao @Rakesh, sto usando php versione 7.1.7 e ho applicato Mr. ma la soluzione e il sito Web non mostrano alcun errore. il mio negozio è in modalità di sviluppo. ma mostrando una pagina vuota.
Sanjay Jethva,

0

Ho avuto questo problema nel mio caso era un modulo che ho usato nel file registration.php

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

il problema è in questa riga " isset ($ file)? dirname ($ file): __DIR__", quindi l'ho cambiato in " __DIR__", e ora funziona, spero che sia di aiuto.


0

So che è un problema piuttosto vecchio e tutti conoscono già la soluzione, ma ho creato un pacchetto rapido basato su compositore con correzione, basta eseguire nella tua radice Magento:

il compositore richiede la compatibilità idealcode / magento2-windows

Spero sia utile.


0

Ho avuto lo stesso errore su Linux. Se si esegue Magento in modalità sviluppatore, ciò può accadere perché Magento non comprende i collegamenti simbolici. Per consentire i collegamenti simbolici, eseguire semplicemente il seguente sql:

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

Quindi eseguire: bin/magento cache:flush

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.