Magento 2 404 ошибка для скриптов и CSS


39

Я загрузил и установил Magento 2 с https://github.com/magento/magento2

Но я получаю сообщение об ошибке 404 для скриптов и CS, расположенных в http: // localhost / magento2 / pub / static /

Я проверил, движок переписывания Apache включен. Но все же файлы css и js не загружаются.

Когда я пытаюсь получить доступ к файлу прямо из браузера, он выдает следующее исключение.

Cannot create a symlink for "D:/xampp/htdocs/magento2/lib/web/mage/calendar.css" and place it to "D:/xampp/htdocs/magento2/pub/static/frontend/Magento/blank/en_US/mage/calendar.css" Warning!symlink(): Cannot create symlink, error code(1314)
#0 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\Filesystem\Directory\Write.php(155): Magento\Framework\Filesystem\Driver\File->symlink('D:/xampp/htdocs...', 'D:/xampp/htdocs...', Object(Magento\Framework\Filesystem\Driver\File))
#1 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink.php(30): Magento\Framework\Filesystem\Directory\Write->createSymlink('lib/web/mage/ca...', 'frontend/Magent...', Object(Magento\Framework\Filesystem\Directory\Write))
#2 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\View\Asset\Publisher.php(65): Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink->publishFile(Object(Magento\Framework\Filesystem\Directory\Write), Object(Magento\Framework\Filesystem\Directory\Write), 'lib/web/mage/ca...', 'frontend/Magent...')
#3 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\View\Asset\Publisher.php(49): Magento\Framework\App\View\Asset\Publisher->publishAsset(Object(Magento\Framework\View\Asset\File))
#4 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\StaticResource.php(118): Magento\Framework\App\View\Asset\Publisher->publish(Object(Magento\Framework\View\Asset\File))
#5 D:\xampp\htdocs\magento2\lib\internal\Magento\Framework\App\Bootstrap.php(245): Magento\Framework\App\StaticResource->launch()
#6 D:\xampp\htdocs\magento2\pub\static.php(13): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\StaticResource))
#7 {main}

Моя операционная система - Windows 7, и я использую сервер xampp.


Поймите, что об этом спрашивали в 2015 году, но если другие по-прежнему смотрят этот пост, вы не должны получать magento от git. Вы делаете это только в том случае, если вы отправляете запрос на удаление. Magento должен быть загружен из раздела загрузки сайта или установлен через композитор.
Доминик Ксиген

Ответы:


86

Когда не в производственном режиме, Magento 2 будет пытаться создать символические ссылки для некоторых статических ресурсов. Вы можете изменить это поведение, выполнив следующие действия.

  1. Откройте app/etc/di.xmlи найдите virtualType name="developerMaterialization"раздел. В этом разделе вы найдете элемент, name="view_preprocessed"который необходимо изменить или удалить. Вы можете изменить его, изменив содержимое с Magento\Framework\App\View\Asset\MaterializationStrategy\SymlinkнаMagento\Framework\App\View\Asset\MaterializationStrategy\Copy

  2. Удалите файлы в pub / static, чтобы избавиться от любых существующих символических ссылок. Вы можете быть осторожны, чтобы не удалить .htaccessфайл.

Это должно решить вашу ошибку с символической ссылкой.


2
Просто удаление папки pub / static работало на меня.
Адам Мосс

4
Удаление паба / статического содержимого недостаточно в моем случае. Мне пришлось изменить Symlink на Copy, как уже упоминалось в ответе выше, чтобы получить нормальную загрузку скина!
Haijerome

2
Работал как шарм ... !!!!
Нирадж Гарг

2
Это не сработало для меня, даже не удаляя папку / pub / static. Есть другие идеи?
гонкалотомы

2
Не работает для меня :-(
Алаа М. Джадду

7

Я столкнулся с этой проблемой и пытаюсь разобраться. Я согласен с Крисом О'Тулом. Я добавлю дополнительный шаг. Мои шаги

  1. Откройте приложение / etc / di.xml и найдите символическую ссылку. Проверьте это в следующем разделе.
<virtualType name="developerMaterialization" type="Magento\Framework\App\View\Asset\MaterializationStrategy\Factory">
                <arguments>
                    <argument name="strategiesList" xsi:type="array">
                        <item name="view_preprocessed" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
                        <item name="default" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
                    </argument>
                </arguments>
            </virtualType>

Замените символическую ссылку на Копировать слово. Сохранить.

  1. Удалить все папки в pub / static. Не удаляйте .htaccess и другие файлы.

  2. Запустите xampp от имени администратора. Запустите командную строку от имени администратора. Беги grunt exec:<theme name>.

введите описание изображения здесь

Вы увидите, что он работает нормально.

Тогда вы можете запустить grunt less:<theme name>

введите описание изображения здесь

Наконец вы можете запустить grunt watch

введите описание изображения здесь

Когда вы делаете какие-либо изменения в меньшем количестве файлов (_theme.less или _extend.less), он автоматически создает CSS-файлы style-l и style-m в папке pub / static.

Я бегу magento 2.1 в Windows 10.


На самом деле нам не нужен первый шаг.
тя

2

Не забудьте обновить права доступа к файлам после того, как Magento создаст эти новые статические файлы. Они не принадлежат www-данным, поэтому они выдадут 404.


1

В моем случае это было не потому, что мой app/etc/di.xmlимел, Magento\Framework\App\View\Asset\MaterializationStrategy\Symlinkкак упомянуто @Chrish. Это было потому, что один из моих модулей имел ошибку сценария в моем .phtmlфайле. Я бы порекомендовал проверить ваш код в .phtmlфайле. В моем случае это было решено путем внесения исправлений в мой файл сценария initialize.phtml.


0

Я нашел важным использовать правильное разрешение для apache с mod_php для папок pub / static и var /. Из статьи Алана Шторма http://alanstorm.com/magento_2_adding_frontend_files_to_your_module

find /path/to/magento2/pub/static -exec chmod 777 '{}' +
find /path/to/magento2/var/ -exec chmod 777 '{}' + 

Вы должны выполнить это в терминале сервера. Это исправило ошибку 404 для скриптов и изображений.

ps но это для линукса.


Вы также можетеchmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
nick.graziano

0

Я думаю, что правильный способ сделать это из командной строки: перейдите в каталог magento и выполните следующую команду:

php bin/magento setup:static-content:deploy

Пустой var/cacheкаталог и проверка.


0

Просто удалил все файлы под pub/static/*. Magento будет автоматически генерировать статические файлы для вас при загрузке страницы.


0

Вы должны запустить Xampp (apache, nginx) и т. Д. В качестве администратора, чтобы позволить ему создавать символические ссылки под Windows (протестировано с Windows 10).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.