Пустая страница администратора на Magento 2.3.0 CE в localhost - PullRequest
0 голосов
/ 30 ноября 2018

Я установил Magento 2.3 на мою локальную машину, установка идет нормально.Я могу получить доступ к своему магазину на localhost/magento.Я попытался получить доступ к своей странице администратора localhost/magento/admin_pogi, но она дает мне пустую страницу и перенаправляет на URL http://localhost/magento/admin_pogi/admin/index/index/key/a062e79f617010c42b07d662103d5142cd9bbe86314fb54da3e4cb5542b11eee/.

. Я пытался включить режим разработки и вижу эту ошибку намоя страница администратора:

1 exception(s):
Exception #0 (Magento\Framework\Exception\ValidatorException): Invalid 
template file: 'C:/xampp/htdocs/magento/vendor/magento/module- backend/view/adminhtml/templates/page/js/require_js.phtml' in module: 
'Magento_Backend' block's name: 'require.js'

Exception #0 (Magento\Framework\Exception\ValidatorException): Invalid template file: 'C:/xampp/htdocs/magento/vendor/magento/module-backend/view/adminhtml/templates/page/js/require_js.phtml' in module: 'Magento_Backend' block's name: 'require.js'
#0 C:\xampp\htdocs\magento\vendor\magento\framework\View\Element\Template.php(301): 
Magento\Framework\View\Element\Template->fetchView('C:/xampp/htdocs...')
#1 C:\xampp\htdocs\magento\vendor\magento\framework\View\Element\AbstractBlock.php(668): Magento\Framework\View\Element\Template->_toHtml()#2 
C:\xampp\htdocs\magento\vendor\magento\framework\View\Result\Page.php(249): 
Magento\Framework\View\Element\AbstractBlock->toHtml()
#3 
C:\xampp\htdocs\magento\vendor\magento\framework\View\Result\Layout.php(171): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor))
#4 C:\xampp\htdocs\magento\generated\code\Magento\Backend\Model\View\Result\Page\Interceptor.php(193): Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#5 C:\xampp\htdocs\magento\vendor\magento\framework\App\Http.php(139): Magento\Backend\Model\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#6 C:\xampp\htdocs\magento\generated\code\Magento\Framework\App\Http\Interceptor.php(24): Magento\Framework\App\Http->launch()
#7 C:\xampp\htdocs\magento\vendor\magento\framework\App\Bootstrap.php(258): Magento\Framework\App\Http\Interceptor->launch()
#8 C:\xampp\htdocs\magento\index.php(39): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))
#9 {main}

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Это основная проблема Magento 2.3.0.Чтобы исправить эту проблему, вы должны изменить код в основном файле Magento.

Перейти к пути / vendor / magento / framework / View / Element / Template / File / Validator.php В этом файле найдите:

$realPath = $this->fileDriver->getRealPath($path);

Заменить на:

$realPath = str_replace('\\', '/', $this->fileDriver->getRealPath($path));
0 голосов
/ 30 ноября 2018

Это будет ошибка с адресом this commit .Автор изменил $path на

$this->fileDriver->getRealPath($path)

, который просто вызывает realpath() на $path, но это может изменить разделители каталогов на $path, которые ранее были затронуты

#/vendor/magento/framework/View/Element/Template/File/Validator.php:114
$filename = str_replace('\\', '/', $filename);

В ОС Windows это вернет изменения, указанные выше str_replace, так что путь, подобный

D:/Magento2.3/vendor/magento

, будет канонизирован для его специфичной для Windows версии:

D:\Magento2.3\vendor\magento

, и это не будетпривести к успешному сравнению в isPathInDirectories() методе Magento\Framework\View\Element\Template\File\Validator класса:

foreach ($directories as $directory) {
    if (0 === strpos($realPath, $directory)) {
        return true;
    }
}

Решение

В настоящее время мы можем пойти на грязное быстрое изменение в вышеупомянутом цикле foreach так, чтобымы можем запустить наше magento без дальнейших проблем по этому вопросу:

#/vendor/magento/framework/View/Element/Template/File/Validator.php:139
foreach ($directories as $directory) {
    // Add this line
    $realDirectory = $this->fileDriver->getRealPath($directory);
    // and replace `$directory` with `$realDirectory`
    if (0 === strpos($realPath, $realDirectory)) {
        return true;
    }
}
...