Magento 2 CSS та JavaScript не завантажуються з правильної папки


35

Я сподіваюся, що хтось тут може допомогти. Я намагаюся встановити і запустити Magento 2 на WAMP на машині Windows 7 з невеликим успіхом.

Після переходу через безліч та різноманітних обручів, щоб отримати сайт для завантаження, я зараз стикаюся з 404 відповідями та відсутністю стилів чи завантаженням JavaScript.

Специфікація така:

  • Magento-CE-2.0.0 + зразки
  • Apache 2.4.9
  • PHP 5.5.12
  • MySQL 5.6.17

Коли я дивлюся на консоль браузера, серед помилок є спроби доступу до файлів, які не знаходяться в папці pub / static. Папка "frontend" завантажується, і більшість файлів присутні. Однак я помітив, що деяких файлів CSS немає.

При запуску команди розгортання PHP

php bin/magento setup:static-content:deploy

що згадується в інших публікаціях, я отримую помилку нижче. Я не впевнений, як це виправити?

Фатальна помилка: Дозволений розмір пам'яті 134217728 байтів вичерпано (намагався виділити 64 байти) в C: \ wamp \ www \ magento \ vendor \ oyejorge \ less.php \ lib \ Mess \ Visitor.php у рядку 45

Будь-яка допомога буде дуже вдячна.

ОНОВЛЕННЯ

Я наткнувся на запас пам’яті PHP і запустив сценарій розгортання PHP. Цього разу він не помилився та виконаний повністю. Однак все ще існує та сама проблема, як описана вище. Сайт завантажується, але кожна спроба завантажити будь-яку сторінку чи актив призводить до помилки 404 сторінки, не знайдено помилки, не застосовується стилізація.

Нижче див. Помилки в Інспекторі Chrome

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


@TejabhagavanKollepara Це запитання було задано першим, добре сформоване, має хороші відповіді, тож ІМО інше питання - це кандидат, а не цей ... Btw, якщо прапор в іншому питанні як дублікат на цей був відхилений , не потрібно позначати це питання як дублікатом іншого, щоб намагатися досягти того ж.
7оч.

Дивіться також відповідь SA - свіжа установка Magento знаходиться в режимі "за замовчуванням" (а не "виробництво") і не потребує розгортання статичного вмісту, що саме вам говорять у всіх інших відповідях.
Jānis Elmeris

Відповіді:


50

РІШЕННЯ №1 (ЯКЩО Ви хочете редагувати XML-файл)

Я хотів би, щоб ви завантажили Magento 2 zip magentocommerce.com/downloadз зразок даних, створили новий db у phpmyadmin , витягніть zip у папку htdocs . Встановіть Magento 2, але не використовуйте localhost використання 127.0.0.1 в магазині та в адміністраторі. Після успішної установки НЕ запускайте магент.

Тепер ми будемо очищати / видаляти кеші та сеанси Magento 2. Переходимо до наступних шляхів та видаляємо все:

ROOT > var > cache > *DELETE ALL*
ROOT > var > page_cache > *DELETE ALL*
ROOT > var > session > *DELETE ALL*

Коли Magento 2 не знаходиться в режимі виробництва, він спробує створити символьні посилання для деяких статичних ресурсів на локальному сервері. Ми повинні змінити таку поведінку Magento 2, відправивши редагування ROOT > app > etc > di.xmlфайлу. Відкрийте di.xmlулюблений редактор коду, знайдіть virtualType name="developerMaterialization"розділ. У цьому розділі нижче ви знайдете елемент, <item name="view_preprocessed" xsi:type="object">який потрібно змінити. Ви можете змінити його, змінивши наступний вміст:

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

До:

Magento\Framework\App\View\Asset\MaterializationStrategy\Copy

Останній крок - також видалити старі файли, згенеровані в ROOT > pub > static > DELETE ALL EXCEPT .HTACCESS

РІШЕННЯ №2

Встановити композитор. Тепер я хотів би, щоб ви завантажили zip Magento 2 magentocommerce.com/download, створили новий db у phpmyadmin , витягніть zip у папку htdocs . Встановіть Magento 2, але не використовуйте localhost використання 127.0.0.1 в магазині та в адміністраторі. Після успішної установки НЕ запускайте магент.

Тепер ми будемо перевіряти встановлення композитора, розгортати статичний вміст, очищати / промивати кеш Magento та повторно встановлювати блоки Magento 2. Щоб виконати всі вищезазначені дії, натисніть WINDOWS KEY + R, щоб відкрити діалогове вікно RUN, і введіть “cmd”, щоб відкрити командний рядок.

Введіть “ cd PATH_TO_YOUR_MAGENTO2_FILES ” для введення в каталог Magento 2 ROOT.

Тепер, щоб перевірити встановлення композитора у вищевказаному каталозі, введіть " встановити композитор ".

Якщо ви отримаєте помилку на цьому кроці, перегляньте свою установку композитора

На цьому кроці ми налаштовуємо статичний вміст для розміщення в нашому магазині Magento. Для цього введіть “ php bin / magento setup: static-content: speak ”.

Для тих, хто на Magento 2.2.x

php bin/magento setup:static-content:deploy -f

Якщо ви отримаєте помилку, перевірте свою PHP.EXE та PHP.INI змінну навколишнього середовища

Очистити / змити кеш-пам'ять Magento, ввівши “ php bin / magento cache: flush ” у CMD.

І нарешті, до статичних блоків Reindex Magento введіть “ php bin / magento indexer: reindex ”.

Ви закінчили успішну установку Magento 2.


4
Також у php.ini змініть max_execution_time на 500, memory_limit до 2048M, post_max_size до 2048M, upload_max_filesize до 2048M та max_file_uploads до 2048.
Fayyaz Khattak,

Дякую за швидку відповідь. Я вніс ці зміни, але вони не мали ефекту. Після внесення змін я перезапустив сервер WAMP. Я відредагував питання, щоб показати помилки, які я бачу в інспекторі Chrome
E.Gain

О, мені шкода згадати ще одне, спочатку видаліть увесь кеш-пам'ять та сеанс, внесіть зміни в di.xml, а також видаліть все з ROOT> pub> static> ВИДАЛИТИ ВСІ ВИНАГИ .HTACCESS
Fayyaz Khattak

1
@MagenX Це думка кожної людини про те, який інструмент він більше вважає за краще використовувати. На ваших очах ви критикуєте все як молот, а не ділитесь своїм поглядом на рішення.
Фаяз Хаттак

1
Рішення №2 спрацювало як шарм, дякую, що ви заощадили мені години, а не дні, займаючись цим питанням!
Джонатан Марзулло

11

вам просто потрібно оновити файл apache2.conf.

У Ubuntu 16.04

  1. Відкрийте та відредагуйте файл /etc/apache2/apache2.conf
  2. Перейдіть до місця у файлі apache2.conf <Directory /var/www/>
  3. Змінити "AllowOverride None"на"AllowOverride All"
  4. Збережіть файл
  5. Перезапустити apache2 -> sudo service apache2 restart

Настільки важко було знайти цю відповідь! Скрізь, де люди пропонують (повторно) розгорнути статичний контент, навіть якщо свіжа установка Magento знаходиться в режимі "за замовчуванням" (а не "виробництво") і не потребує розгортання статичного вмісту.
Jānis Elmeris

10

Якщо ви зіткнулися з проблемою дизайну завантаження css та js сторінки після встановлення в magento2

будь ласка, виконайте наступний крок:

відкрийте термінал і перейдіть до веб-кореня magento

 $ cd / var / www / html / magento2 

Крок 1.

 Налаштування $ php bin / magento: статичний контент: розгортання

Крок 2.

$ php бін / магенто індексатор: повторне введення

Крок 3.

переконайтесь, що apache “rewrite_module” увімкнено та перезапустіть сервер

Крок 4.

$ chown -R www-data: www-data / var / www / html / magento2 

Крок 5.

 $ chmod -R 777 / var / www / html / magento2 

Крок 6.

видалити папку кеша під var / cache

Наведений вище крок працює. Я сподіваюся, що це також спрацює і для вас.

Повідомте мене, якщо є якесь питання. :)

http://gotechnies.com/css-javascript-files-loading-magento-2-installation/


1
як запускати ці команди у Windows?
Хасан Алі

1
Це працює для мене лише перші 3 кроки. :)
hln

6
Не так розумно встановлювати дозвіл на 777 для всіх файлів на сервері.
Кріс Гудн

1
Я не дуже вражений кроком, коли ви даєте повний дозвіл на запис для читання всій установці magento.
Cyclonecode

1
встановлення дозволів на 777 - це погана порада, але, сподіваємось, будь-які сисадміни знають краще.
Джон Холл

6

Для мене це було просто тому, що mod_rewrite не було включено.

sudo a2enmod rewrite

і

service apache2 restart


1
ідеальне рішення !!! +1 :)
SagarPPanchal

6

У мене те саме питання було вирішено додаванням

sudo nano /etc/apache2/apache2.conf

Змініть це

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

до цього

<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Ви також повинні активувати mod_rewriteмодуль apache2 і inall ssl сертифікати:

sudo a2enmod ssl

sudo a2ensite default-ssl

sudo a2enmod rewrite

sudo service apache2 restart

1
Це, плюс rm -rf var / * працювало для мене. Прекрасне і гарне місце.
Джон Голланд

6

Ось найпростіше рішення, якщо показ імені версії в шляху css

як: pub / static / version323334 /

потім запустіть цей запит у mysql

INSERT INTO core_config_data (path, value) VALUES ('dev/static/sign', 0)
ON DUPLICATE KEY UPDATE value = 0;

після цього очистіть кеш конфігурації

 bin/magento cache:clean config

ви також можете відключити статичну версію файлу від адміністратора

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


4
Це працювало для мене дякую. Однак запит потрібно виправити INSERT INTO core_config_data (path, value) VALUES ('dev / static / sign', 0);
Aftab Naveed

що таке шлях та значення
zus

Шлях, значення - це ім'я полів, я вже визначаю значення (dev / static / sign, 0), просто запустіть цей sql, це має бути спрацювати
Surendra Kumar Ahir

ідеальне рішення !!! зробив мій день :) +1
SagarPPanchal

5
  1. Спробуйте вимкнути кеш, якщо ви не відключили його раніше
  2. Переконайтеся, що у вас є остання версія Magento з чистим кодом. Якщо ви щось модифікуєте або налаштовуєте, обов'язково виправте всі помилки.
  3. Виконати кілька команд нижче, можливо, вам допоможе.

    php bin/magento indexer:reindex

    php bin/magento cache:flush

Видаліть папки в

  • pub/static/frontend/*
  • var/cache
  • var/view_preprocessed/*

  • php bin/magento setup:static-content:deploy


3

У моєму випадку я випадково видалив .htaccessфайл з ROOT/pub/і ROOT/pub/staticпапки. Потім він починає працювати, коли я повертаю його назад .


2

Вирішено !!!

Виконайте наступні команди в інтерфейсі CLI кореневої папки Magento2:

php bin/magento setup:static-content:deploy

php bin/magento indexer:reindex

Потім видаліть папку var за допомогою цієї команди у вашому корені magento2.

rm -rf var/*

Потім оновіть домашню сторінку та панель адміністратора. Це працює !!!!! Класно !!!!


1

У мене був такий самий випуск із 404. Я вирішив це, переконавшись, що директива VirtualHost в Apache була правильною. Ось мій VirtualHost:

<VirtualHost *:80>
    DocumentRoot /var/www/magento2
    ServerName magento-ce-2.1.6
    <Directory "/var/www/magento2">
        Options Indexes FollowSymLinks
        AllowOverride All
    </Directory>
</VirtualHost>

І чи можете ви також сказати, що раніше було не так? Інакше цей приклад не допоможе іншим.
Фабіан Шменглер


0

У мене була та сама проблема, що і в ОП, і це було просто тому, що я встановив свою локальну мову en_AU, тому використовуючи команду розгортання за замовчуванням, лише генерується en_USвміст. Ви повинні додати локальний код, який ви фактично використовуєте, до EN команди, наприклад:

php bin/magento setup:static-content:deploy en_US en_AU

0

Я спробував вищевказані рішення. Але це мені не допомогло. Незважаючи на те, я використовував ті самі команди, які вони згадували зі змінами послідовності. Вони є,

  1. очистити кеш, composer_home, покоління, журнал, page_cache, tmp та view_preprocessed з каталогу каталогу var

  2. виконайте наступні команди по черзі.

php bin / magento indexer: перевстановити

php bin / magento cache: flush

Налаштування php bin / magento: статичний контент: розгортання

Я сподіваюся, що це може допомогти комусь, як я.


0

Вимкнути mod_pagespeed

Pagespeed обробляє "кешований" екземпляр вашого вмісту за допомогою абревіатури, тобто якщо це звичайний файл.

image.css

Він буде встановлений наступним чином.

image.pagespeed.css

Наведене вище є дуже простим прикладом, але вже ви можете бачити, де лежить в основі проблема. Це може спричинити неправильне завантаження статичного вмісту через те, що їх неможливо знайти через основний контур, через те, що вони є тимчасово. Це проблема успадкованого Mod_Pagespeed, тому ми радимо його відключити.

передвісниця швидкої підтримки комет, і це вирішило мою проблему


0

Для Ubuntu 18.04 (Bionic). Я використовував наступні кроки, щоб статичні файли правильно завантажувались.

Після завершення встановлення:

Переконайтесь, що модуль apache 'переписати' увімкнено, якщо не робити наступне

  • cd /etc/apache2
  • запустити команду a2enmod rewrite
  • sudo vi /etc/apache2/apache2.conf

Потім внесіть такі зміни

Змінити з:

<Directory /var/www/>
     Options Indexes FollowSymLinks
     AllowOverride None
     Require all granted
</Directory>

до

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Потім перезапустіть апаш

sudo service apache2 restart

або

sudo /etc/init.d/apache2 restart

Потім змініть дозволи на <magento root director>

  • chmod -R 774 /var/www/html/<magento root director>

Потім розгорніть статичний вміст

  • php bin/magento setup:static-content:deploy -f (-f потрібно, якщо ви перебуваєте в розробці env)

Потім очистіть кеш і повторно встановіть

  • <magento root directory> php bin/magento cache:flush
  • <magento root directory> php bin/magento indexer:reindex

АБО

  • <magento root directory> rm -R /var/cache*

Потім перейдіть на свою домашню сторінку за допомогою

  • 127.0.0.1/your_configured_url замість localhost/your_configured_url

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