Пустая страница администратора после установки Magento 2.3 в Windows 10 - PullRequest
0 голосов
/ 01 декабря 2018

Я устанавливаю Magento 2.3 локально на Windows 10 с xampp.Я скачал архив с Github, разархивировал на c:\xampp\htdocs\magento2 и запустил установщик с localhost/magento2/setup в своем браузере.

Установщик завершил работу без ошибок, однако, когда я захожу на страницу администратора, я получаюпустая страница с сероватым фоном.Когда я перехожу к localhost/magento2, я получаю это

I get this

Когда я смотрю в magento2/var/log/system.log, появляются некоторые ошибки, которые говорят что-то вроде следующего(каждая из этих ошибок повторяется несколько раз для списка разных имен файлов)

main.ERROR: A symlink for "C:/xampp/htdocs/magento2/lib/web/requirejs/require.js" can't be created and placed to "C:/xampp/htdocs/magento2/pub/static/adminhtml/Magento/backend/en_US/requirejs/require.js". Warning!symlink(): Cannot create symlink, error code(1314) [] [] ) [] []

main.CRITICAL: Invalid template file: 'C:/xampp/htdocs/magento2/app/code/Magento/Backend/view/adminhtml/templates/page/js/require_js.phtml' in module: 'Magento_Backend' block's name: 'require.js' [] []

РЕДАКТИРОВАТЬ:

Я получил страницу администратора, изменив код в magento\lib\internal\Magento\Framework\View\Element\Template\File\Validator.php

Исходный код был

public function isValid($filename)
{
    $filename = str_replace('\\', '/', $filename);
    if (!isset($this->_templatesValidationResults[$filename])) {
        $this->_templatesValidationResults[$filename] =
            ($this->isPathInDirectories($filename, $this->_compiledDir)
                || $this->isPathInDirectories($filename, $this->moduleDirs)
                || $this->isPathInDirectories($filename, $this->_themesDir)
                || $this->_isAllowSymlinks)
            && $this->getRootDirectory()->isFile($this->getRootDirectory()->getRelativePath($filename));
    }
    return $this->_templatesValidationResults[$filename];
}

Я изменил его на

public function isValid($filename)
{
   return true;
}

Поскольку я новичок в Magento, я не понимаю, что должен делать этот метод (я предполагаю, что он проверяет файл шаблона, но я не знаю, как и где).Более того, когда я добавил оператор log в исходный код, чтобы показать содержимое $this->_templatesValidationResults[$filename] (прямо перед оператором return), он напечатал несколько пустых элементов массива.Например, он напечатал

[] []  
[] []
[] []
[] []

Похоже, что Magento считает файлы шаблонов недействительными, но не дает никаких причин, по которым они недействительны.Правильно ли я сказал это, и как бы я мог остановить Magento от ошибочного определения файлов шаблонов как недействительных, или получить правильное сообщение об ошибке проверки?

Возможное решение и дополнительные вопросы

Я отследил проблему до файла magento\lib\internal\Magento\Framework\View\Element\Template\File\Validator.php

в функции

protected function isPathInDirectories($path, $directories)
{
    if (!is_array($directories)) {
        $directories = (array)$directories;
    }
    $realPath = $this->fileDriver->getRealPath($path);
    foreach ($directories as $directory) {
        if (0 === strpos($realPath, $directory)) {
            return true;
        }
    }
    return false;
}

Проблема в том, что $path содержит косые черты, но $realPathимеет обратную косую черту, поэтому strpos никогда не возвращает совпадения, а функция всегда возвращает false.Я обновил функцию до

protected function isPathInDirectories($path, $directories)
{
    if (!is_array($directories)) {
        $directories = (array)$directories;
    }
    $realPath = $this->fileDriver->getRealPath($path);
    foreach ($directories as $directory) {
        if (0 === strpos($realPath, $directory) || 0 === strpos($path, $directory)) {
            return true;
        }
    }
    return false;
}

И теперь она работает.Я полагаю, это проблема только для Windows?Это ошибка в Magento, которая не учитывает именования файлов Windows, или я что-то неправильно сделал в моей настройке?

1 Ответ

0 голосов
/ 17 января 2019

У меня та же проблема с magento 2.3 в Windows 10, на странице backoffice отображается пустая страница с коричневым фоном.

после поиска проблемы в Интернете, наконец-то найдено решение

  1. открыть файл / vendor / magento / framework / View / Element / Template / File / Validator.php в каталоге magento install, найти

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

заменить на:

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

Наконец отображается страница входа, но значок отсутствует на странице входа и после входа в систему

открыть файл app / etc / di.xml в magento install dir, найти

Magento \ Framework \ App \ View \ Asset \ MaterializationStrategy \ Symlink

и заменить на

Magento\Framework\App\View\Asset\MaterializationStrategy\Copy
Затем перейдите в var / cache , удалите все папки / файлы обновите страницу, готово.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...