Помилка 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 році, але якщо інші люди все ще дивляться на цю посаду, вам не слід отримувати магенто від 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. Видаліть файли під паб / static, щоб позбутися від усіх існуючих символьних посилань. Ви можете бути обережними, щоб не видалити .htaccessфайл.

Це повинно вирішити вашу помилку із символьним посиланням.


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

4
Видалення паб / статичного вмісту в моєму випадку недостатньо. Мені довелося змінити Symlink на Copy, як зазначено у відповіді вище. Щоб отримати нормальну завантаження шкіри!
Haijerome

2
Працював як шарм ... !!!!
Neeraj Garg

2
Це не спрацювало для мене, навіть не видаливши папку / pub / static. Будь-які інші ідеї?
goncalotomas

2
Не працює для мене :-(
Alaa M. Jaddou

7

Я зіткнувся з цією проблемою і намагаюся розібратися. Я згоден з Крісом О'Тул. Я додам додатковий крок. Мої кроки:

  1. Відкрийте додаток / etc / di.xml та шукайте Symlink. Перевірте це в наступному розділі.
<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>

Замініть Symlink на Copy word. Зберегти.

  1. Видаліть усі папки в паб / static. Не видаляйте .htaccess та інші файли.

  2. Запустіть xampp як адміністратор. Запустити командний рядок як адміністратор. Біжи grunt exec:<theme name>.

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

Ви побачите, що це працює нормально.

Тоді можна бігти grunt less:<theme name>

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

Нарешті ви можете бігти grunt watch

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

Якщо ви зробите будь-які зміни в меншій кількості файлів (_theme.less або _extend.less), вони автоматично створюватимуть файли style-l та style-m css у папці / статичній папці.

Я запускаю magento 2.1 в Windows 10.


Насправді нам не потрібен перший крок.
ча

2

Не забудьте оновити дозволи файлів після створення Magento цих нових статичних файлів. Вони не належать www-data, тому вони дадуть 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 Але це для Linux.


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

0

Я думаю, що правильний спосіб зробити це - з командного рядка: cd у ваш каталог magento та запустіть таку команду:

php bin/magento setup:static-content:deploy

Порожній var/cacheкаталог і перевірте.


0

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


0

Ви повинні запустити Xampp (apache, nginx) тощо як адміністратор, щоб дозволити йому створювати посилання у Windows під Windows (тестовано з Windows 10).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.