Błąd Magento 2 404 dla skryptów i css


39

Pobrałem i zainstalowałem Magento 2 z https://github.com/magento/magento2

Ale dostaję błąd 404 dla skryptów i cs znajdujących się w http: // localhost / magento2 / pub / static /

Sprawdziłem, silnik przepisywania Apache jest włączony. Ale nadal pliki css i js nie ładują się.

Kiedy próbuję uzyskać dostęp do pliku bezpośrednio z przeglądarki, daje to następujący wyjątek.

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}

Mój system operacyjny to Windows 7 i korzystam z serwera xampp.


Zdaj sobie sprawę z tego, o co pytano w 2015 roku, ale jeśli inni nadal patrzą na ten post, nie powinieneś otrzymywać Magento z GIT. Robisz to tylko wtedy, gdy przesyłasz żądanie ściągnięcia. Magento należy pobrać z sekcji pobierania strony lub zainstalować przez kompozytora.
Dominic Xigen

Odpowiedzi:


86

Gdy nie jest w trybie produkcyjnym, Magento 2 spróbuje utworzyć dowiązania symboliczne dla niektórych zasobów statycznych. Możesz zmienić to zachowanie, wykonując następujące czynności.

  1. Otwórz app/etc/di.xmli znajdź virtualType name="developerMaterialization"sekcję. W tej sekcji znajdziesz element name="view_preprocessed", który należy zmodyfikować lub usunąć. Możesz to zmienić, zmieniając zawartość z Magento\Framework\App\View\Asset\MaterializationStrategy\SymlinknaMagento\Framework\App\View\Asset\MaterializationStrategy\Copy

  2. Usuń pliki w pub / static, aby pozbyć się wszelkich istniejących dowiązań symbolicznych. Możesz być ostrożny, aby nie usunąć .htaccesspliku.

To powinno rozwiązać twój problem z dowiązaniem symbolicznym.


2
Usunięcie folderu pub / static działało dla mnie.
Adam Moss,

4
W moim przypadku usunięcie pub / statycznych treści nie wystarczy. Musiałem zmienić Symlink na Kopiuj, jak wspomniano w odpowiedzi powyżej. Aby skóra ładowała się dobrze!
Haijerome

2
Działa jak urok ... !!!!
Neeraj Garg,

2
Nie działało to dla mnie, nawet nie usuwając folderu / pub / static. Jakieś inne pomysły?
goncalotomas

2
Nie działa dla mnie :-(
Alaa M. Jaddou

7

Stawiłem czoła temu problemowi i staram się to rozgryźć. Zgadzam się z Chrisem O'Toole. Dodam dodatkowy krok. Moje kroki to

  1. Otwórz aplikację / etc / di.xml i wyszukaj Symlink. Sprawdź to w następnej sekcji.
<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>

Zamień dowiązanie symboliczne na Kopiuj słowo. Zapisać.

  1. Usuń wszystkie foldery w pub / static. Nie usuwaj plików .htaccess i innych plików.

  2. Uruchom xampp jako administrator. Uruchom wiersz poleceń jako administrator. Uruchom grunt exec:<theme name>.

wprowadź opis zdjęcia tutaj

Zobaczysz, że działa dobrze.

Potem możesz biec grunt less:<theme name>

wprowadź opis zdjęcia tutaj

Wreszcie możesz biegać grunt watch

wprowadź opis zdjęcia tutaj

Po wprowadzeniu jakichkolwiek zmian w mniejszej liczbie plików (_theme.less lub _extend.less) automatycznie utworzysz pliki css typu l i style-m w folderze pub / static.

Korzystam z Magento 2.1 w Windows 10.


Właściwie nie potrzebujemy pierwszego kroku.
cha

2

Pamiętaj, aby zaktualizować uprawnienia do plików po utworzeniu tych nowych plików statycznych przez Magento. Nie są własnością www-data, więc podadzą 404.


1

W moim przypadku nie było tak, ponieważ mój app/etc/di.xmlmiał, Magento\Framework\App\View\Asset\MaterializationStrategy\Symlinkjak wspomniano w @Chrish. Stało się tak, ponieważ jeden z moich modułów miał błąd skryptu w moim .phtmlpliku. Polecam sprawdzić swój kod w .phtmlpliku. W moim przypadku problem został rozwiązany przez poprawienie mojego pliku skryptu initialize.phtml.


0

Uważam, że ważne jest użycie poprawnego uprawnienia dla apache z mod_php dla pub / static i var / folderów. Z artykułu Alan Storm 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 '{}' + 

Powinieneś to zrobić w terminalu serwera. To naprawiło mnie błąd 404 dla skryptów i obrazów.

ps Ale to dotyczy Linuksa.


Mógłbyś takżechmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
nick.graziano

0

Myślę, że właściwy sposób to zrobić z wiersza poleceń: cd do katalogu magento i uruchom następujące polecenie:

php bin/magento setup:static-content:deploy

Opróżnij var/cachekatalog i sprawdź.


0

Właśnie usunąłem wszystkie pliki w obszarze pub/static/*. Magento automatycznie wygeneruje dla ciebie pliki statyczne po załadowaniu strony.


0

Musisz uruchomić Xampp (apache, nginx) itp. Jako Administrator, aby zezwolić mu na tworzenie dowiązań symbolicznych pod Windows (testowane z Windows 10).

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.