Magento 2 CSS i JavaScript nie ładują się z właściwego folderu


35

Mam nadzieję, że ktoś tu może pomóc. Próbuję zainstalować i uruchomić Magento 2 na WAMP na komputerze z systemem Windows 7, ale bez powodzenia.

Po przejściu przez wiele różnych obręczy, aby strona się załadowała, mam teraz do czynienia z 404 odpowiedziami i brakiem stylów lub ładowania javascript.

Specyfikacja jest następująca:

  • Magento-CE-2.0.0 + Próbki
  • Apache 2.4.9
  • PHP 5.5.12
  • MySQL 5.6.17

Gdy patrzę na konsolę przeglądarki, wśród błędów są próby uzyskania dostępu do plików, które nie znajdują się w folderze pub / static. Folder „frontend” jest ładowany i większość plików jest obecnych. Zauważyłem jednak, że niektóre pliki CSS nie są obecne.

Po uruchomieniu polecenia PHP install

php bin/magento setup:static-content:deploy

który jest wspomniany w innych postach, otrzymuję poniższy błąd. Nie jestem pewien, jak temu zaradzić?

Błąd krytyczny: wyczerpany dozwolony rozmiar pamięci 134217728 bajtów (próbowano przydzielić 64 bajty) w C: \ wamp \ www \ magento \ vendor \ oyejorge \ less.php \ lib \ Less \ Visitor.php w linii 45

Każda pomoc będzie mile widziana.

AKTUALIZACJA

Zwiększyłem limit pamięci PHP i ponownie uruchomiłem skrypt wdrażania php. Tym razem nie popełnił błędu i wykonał się w pełni. Jednak ten sam problem, jak opisano powyżej, nadal występuje. Witryna ładuje się, ale każda próba załadowania dowolnej strony lub zasobu powoduje błąd 404 strony nie znaleziono bez zastosowania stylu.

Zobacz poniżej błędy w Inspektorze Chrome

wprowadź opis zdjęcia tutaj


@TejabhagavanKollepara To pytanie zostało zadane najpierw, jest dobrze uformowane, ma dobre odpowiedzi, więc IMO to drugie pytanie jest kandydatem na duplikat, nie tym ... Btw, jeśli flaga na drugim pytaniu jako duplikat tego pytania została odrzucona , nie trzeba oznaczać tego pytania jako duplikatu drugiego, aby spróbować osiągnąć to samo.
7ochem,

Zobacz także odpowiedź SA - świeża instalacja Magento jest w trybie „domyślnym” (nie „produkcyjnym”) i nie wymaga wdrażania zawartości statycznej, co powiedziano ci we wszystkich pozostałych odpowiedziach.
Jānis Elmeris

Odpowiedzi:


50

ROZWIĄZANIE # 1 (JEŚLI CHCESZ EDYTOWAĆ PLIK XML)

Chciałbym, abyś pobrał plik Magento 2 zip magentocommerce.com/downloadz przykładowymi danymi, utworzył nową bazę danych w phpmyadmin , rozpakował plik zip w folderze htdocs . Zainstaluj Magento 2, ale nie używaj localhost, użyj 127.0.0.1 w adresie URL sklepu i administracyjnym. Po udanej instalacji NIE uruchamiaj magento.

Teraz wyczyścimy / usuniemy pamięci podręczne i sesje Magento 2. Przejdź do następujących ścieżek i usuń wszystko:

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

Gdy Magento 2 nie jest w trybie produkcyjnym, spróbuje utworzyć dowiązania symboliczne dla niektórych zasobów statycznych na serwerze lokalnym. Musimy zmienić to zachowanie Magento 2, przechodząc do edycji ROOT > app > etc > di.xmlpliku. Otwórz di.xmlw swoim ulubionym edytorze kodu, znajdź virtualType name="developerMaterialization"sekcję. W tej sekcji poniżej znajdziesz element, <item name="view_preprocessed" xsi:type="object">który należy zmodyfikować. Możesz to zmienić, zmieniając następującą treść:

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

Do:

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

Teraz ostatni krok, usuń również stare pliki wygenerowane w ROOT > pub > static > DELETE ALL EXCEPT .HTACCESS

ROZWIĄZANIE # 2

Zainstaluj Composer. Teraz chciałbym, abyś pobrał plik Magento 2 zip magentocommerce.com/download, utworzył nowy plik db w phpmyadmin , rozpakował plik zip w folderze htdocs . Zainstaluj Magento 2, ale nie używaj localhost, użyj 127.0.0.1 w adresie URL sklepu i administracyjnym. Po udanej instalacji NIE uruchamiaj magento.

Teraz zweryfikujemy instalację Composer, Wdróż statyczną zawartość, wyczyść / opróżnij pamięć podręczną Magento i ponownie zindeksuj bloki Magento 2. Aby wykonać wszystkie powyższe czynności, naciśnij KLAWISZ WINDOWS + R, aby otworzyć okno dialogowe RUN i wpisz „cmd”, aby otworzyć wiersz polecenia.

Wpisz „ cd PATH_TO_YOUR_MAGENTO2_FILES ”, aby wejść do katalogu ROOT Magento 2.

Teraz, aby zweryfikować instalację Kompozytora w powyższym katalogu, wpisz „ instalacja kompozytora ”.

Jeśli w tym kroku wystąpi błąd, sprawdź instalację programu Composer

W tym kroku konfigurujemy zawartość statyczną do wdrożenia w naszym sklepie Magento. Aby to zrobić, wpisz „ php bin / magento setup: static-content: deploy ”.

Dla tych, którzy korzystają z Magento 2.2.x

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

Jeśli pojawi się jakikolwiek błąd, sprawdź swoją zmienną środowiskową PHP.EXE i PHP.INI

Wyczyść / opróżnij pamięć podręczną Magento, wpisując „ php bin / magento cache: flush ” w CMD.

I na koniec, do Reindex Magento Static Blocks wpisz „ php bin / magento indexer: reindex ”.

Skończyłeś z udaną instalacją Magento 2.


4
Również w php.ini zmień max_execution_time na 500, memory_limit na 2048M, post_max_size na 2048M, upload_max_filesize na 2048M i max_file_uploads na 2048.
Fayyaz Khattak

Dziękuję za szybką odpowiedź. Wprowadziłem te zmiany, ale nie przyniosły żadnego efektu. Po dokonaniu zmian zrestartowałem serwer WAMP. Zredagowałem pytanie, aby pokazać błędy, które widzę w inspektorze Chrome
E.Gain

Och, przepraszam, że wspomniałem jeszcze jedną rzecz, najpierw usuń całą pamięć podręczną i sesję, wprowadź zmiany w pliku di.xml, a także usuń wszystko z ROOT> pub> static> USUŃ WSZYSTKO Z WYJĄTKIEM .HTACCESS
Fayyaz Khattak

1
@MagenX To jest pogląd każdej osoby na to, z którego narzędzia woli korzystać. W twoich oczach krytykujesz wszystko jak młot, zamiast dzielić się swoim poglądem na rozwiązanie.
Fayyaz Khattak,

1
Rozwiązanie nr 2 działało jak urok, dziękuję za oszczędność godzin, jeśli nie dni, zajmując się tym problemem!
Jonathan Marzullo,

11

wystarczy zaktualizować plik apache2.conf.

W systemie Ubuntu 16.04

  1. Otwórz i edytuj plik /etc/apache2/apache2.conf
  2. Przejdź do miejsca w pliku apache2.conf <Directory /var/www/>
  3. Zmień "AllowOverride None"na"AllowOverride All"
  4. Zapisz plik
  5. Uruchom ponownie apache2 -> sudo service apache2 restart

Tak trudno było znaleźć tę odpowiedź! Wszędzie inni ludzie sugerują (ponowne) wdrażanie zawartości statycznej, nawet jeśli nowa instalacja Magento jest w trybie „domyślnym” (nie „produkcyjnym”) i nie wymaga wdrażania zawartości statycznej.
Jānis Elmeris

10

Jeśli napotykasz problem z ładowaniem strony css i js po instalacji w magento2

wykonaj następujący krok:

otwórz terminal i przejdź do katalogu głównego Magento

 $ cd / var / www / html / magento2 

Krok 1.

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

Krok 2.

$ php bin / magento indexer: reindex

Krok 3.

upewnij się, że apache „rewrite_module” jest włączony, a następnie zrestartuj serwer

Krok 4.

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

Krok 5.

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

Krok 6.

usuń folder pamięci podręcznej w var / cache

Powyższy krok działa. Mam nadzieję, że to również zadziała dla ciebie.

Daj mi znać, jeśli jakiś problem. :)

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


1
jak uruchomić te polecenia w systemie Windows?
Hassan ALi

1
To działa dla mnie tylko na pierwsze 3 kroki. :)
2017

6
Nie jest zbyt mądry, aby ustawić uprawnienie na 777 dla wszystkich plików na serwerze.
Chris Gudn,

1
Nie jestem pod wrażeniem kroku, w którym dajesz pełne uprawnienia do odczytu zapisu całej instalacji Magento.
Kod cyklonowy

1
ustawienie uprawnień na 777 to zła rada, ale mam nadzieję, że sysadmini będą wiedzieć lepiej.
John Hall

6

Dla mnie było to po prostu dlatego, że mod_rewrite nie był włączony.

sudo a2enmod rewrite

i

service apache2 restart


1
idealne rozwiązanie !!! +1 :)
SagarPPanchal

6

Dodałem ten sam problem rozwiązany

sudo nano /etc/apache2/apache2.conf

Zmodyfikuj to

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

do tego

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

powinieneś także włączyć mod_rewritemoduł apache2 certyfikatów ssl:

sudo a2enmod ssl

sudo a2ensite default-ssl

sudo a2enmod rewrite

sudo service apache2 restart

1
To plus rm -rf var / * działało dla mnie. Świetne i dobre miejsce.
Jon Holland

6

Oto najprostsze rozwiązanie, jeśli wyświetlasz nazwę wersji w ścieżce css

jak: pub / static / version323334 /

następnie uruchom to zapytanie w mysql

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

po tym wyczyść pamięć podręczną konfiguracji

 bin/magento cache:clean config

możesz także wyłączyć statyczną wersję pliku od administratora

wprowadź opis zdjęcia tutaj


4
To zadziałało dla mnie dziękuję. Jednak zapytanie musi zostać naprawione INSERT INTO core_config_data (ścieżka, value) VALUES ('dev / static / sign', 0);
Aftab Naveed

co to jest ścieżka i wartości
zus

ścieżka, wartość to nazwa pola i już zdefiniowałem wartości (dev / static / sign, 0), po prostu uruchom ten sql powinien działać
Surendra Kumar Ahir

idealne rozwiązanie !!! zrobiłem mój dzień :) +1
SagarPPanchal

5
  1. Spróbuj wyłączyć pamięć podręczną, jeśli nie została wcześniej wyłączona
  2. Upewnij się, że masz najnowszą wersję Magento z czystym kodem. Jeśli coś zmodyfikujesz lub dostosujesz, napraw wszystkie błędy.
  3. Uruchom kilka poleceń poniżej, które mogą ci pomóc.

    php bin/magento indexer:reindex

    php bin/magento cache:flush

Usuń foldery z

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

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


3

W moim przypadku przypadkowo usunięty .htaccessplik z ROOT/pub/i ROOT/pub/staticfoldery. Potem zaczyna działać, kiedy cofam .


2

Rozwiązany !!!

Uruchom następujące polecenia w interfejsie CLI folderu głównego Magento2:

php bin/magento setup:static-content:deploy

php bin/magento indexer:reindex

Następnie usuń folder var za pomocą tego polecenia w katalogu głównym magento2.

rm -rf var/*

Następnie odśwież stronę główną i panel administracyjny. To działa !!!!! Fajne !!!!


1

Miałem ten sam problem z 404. Rozwiązałem to, upewniając się, że dyrektywa VirtualHost w Apache jest poprawna. Oto mój VirtualHost:

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

Czy możesz też powiedzieć, co było wcześniej nie tak? W przeciwnym razie ten przykład nie będzie zbyt pomocny dla innych.
Fabian Schmengler


0

Miałem dokładnie ten sam problem co OP i było to po prostu dlatego, że ustawiłem moje ustawienia regionalne en_AU, więc użycie domyślnego polecenia wdrażania generowało tylko en_USzawartość. Musisz dodać ustawienia narodowe, których aktualnie używasz, do EN polecenia, w następujący sposób:

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

0

Próbowałem powyższych rozwiązań. Ale to mi nie pomogło. Mimo to użyłem tych samych poleceń, o których wspominali przy zmianach sekwencji. Oni są,

  1. wyczyść pamięć podręczną, stronę kompozytora, generowanie, dziennik, pamięć podręczną strony, tmp i podgląd_przetworzony z katalogu var

  2. uruchom następujące polecenia jeden po drugim.

php bin / magento indexer: reindex

php bin / magento cache: flush

konfiguracja php bin / magento: zawartość statyczna: wdrożenie

Mam nadzieję, że może to pomóc komuś takiemu jak ja.


0

Wyłącz mod_pagespeed

Pagespeed przetwarza „buforowane” wystąpienie treści za pomocą skrótu, tj. Jeśli jest to normalny plik.

image.css

Zostanie ustawiony w następujący sposób.

image.pagespeed.css

Powyższy przykład jest bardzo prosty, ale już widać, gdzie leży problem. Może to powodować niewłaściwe ładowanie zawartości statycznej z powodu niemożności znalezienia przez ścieżkę rdzenia, ponieważ są one tymczasowe. Jest to dziedziczny problem związany z Mod_Pagespeed, dlatego też zalecamy wyłączenie go.

odpowiedź na szybkie wsparcie komety i to rozwiązało mój problem


0

Dla Ubuntu 18.04 (Bionic). Aby poprawnie załadować pliki statyczne, zastosowałem następujące kroki.

Po zakończeniu instalacji:

Upewnij się, że moduł „przepisywania” Apache jest włączony, jeśli nie, wykonaj następujące czynności

  • cd /etc/apache2
  • Uruchom polecenie a2enmod rewrite
  • sudo vi /etc/apache2/apache2.conf

Następnie wprowadź następujące zmiany

Zmień z:

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

do

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

Następnie uruchom ponownie apache

sudo service apache2 restart

lub

sudo /etc/init.d/apache2 restart

Następnie zmień uprawnienia dla <magento root director>

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

Następnie wdróż zawartość statyczną

  • php bin/magento setup:static-content:deploy -f (-f jest wymagane, jeśli jesteś w środowisku programistycznym)

Następnie opróżnij pamięć podręczną i ponownieindeksuj

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

LUB

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

Następnie przejdź do swojej strony głównej za pomocą

  • 127.0.0.1/your_configured_url zamiast localhost/your_configured_url

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.