Magento 2 404 Fehler für Skripte und CSS


39

Ich habe Magento 2 von https://github.com/magento/magento2 heruntergeladen und installiert

Aber ich bekomme 404-Fehler für Skripte und Cs in http: // localhost / magento2 / pub / static /

Ich habe überprüft, Apache Rewrite Engine ist eingeschaltet. Trotzdem werden CSS- und JS-Dateien nicht geladen.

Wenn ich versuche, direkt über den Browser auf eine Datei zuzugreifen, tritt die folgende Ausnahme auf.

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}

Mein Betriebssystem ist Windows 7 und ich verwende einen xampp-Server.


Beachten Sie, dass dies im Jahr 2015 gefragt wurde, aber für den Fall, dass andere sich diesen Beitrag noch ansehen, sollten Sie kein Magento von Git erhalten. Sie tun dies nur, wenn Sie eine Pull-Anfrage senden. Magento sollte aus dem Download-Bereich der Site heruntergeladen oder über Composer installiert werden.
Dominic Xigen

Antworten:


86

Wenn sich Magento 2 nicht im Produktionsmodus befindet, versucht es, Symlinks für einige statische Ressourcen zu erstellen. Sie können dieses Verhalten folgendermaßen ändern.

  1. Öffne app/etc/di.xmlund finde den virtualType name="developerMaterialization"Abschnitt. In diesem Abschnitt finden Sie ein Element name="view_preprocessed", das geändert oder gelöscht werden muss. Sie können es ändern, indem Sie den Inhalt von Magento\Framework\App\View\Asset\MaterializationStrategy\Symlinknach ändernMagento\Framework\App\View\Asset\MaterializationStrategy\Copy

  2. Löschen Sie die Dateien unter pub / static, um vorhandene Symlinks zu entfernen. Möglicherweise möchten Sie darauf achten, die .htaccessDatei nicht zu löschen .

Dies sollte Ihren Fehler mit dem Symlink beheben.


2
Das Löschen des pub / static-Ordners hat bei mir funktioniert.
Adam Moss

4
Das Löschen der pub / static-Inhalte reicht in meinem Fall nicht aus. Ich musste den Symlink in "Kopieren" ändern, wie in der obigen Antwort angegeben.
Haijerome

2
Lief wie am Schnürchen...!!!!
Neeraj Garg

2
Das hat bei mir nicht geklappt und nicht einmal den Ordner / pub / static gelöscht. Irgendwelche anderen Ideen?
Goncalotome

2
Nicht für mich arbeiten :-(
Alaa M. Jaddou

7

Ich stellte mich diesem Problem und versuchte es herauszufinden. Ich stimme Chris O'Toole zu. Ich werde zusätzlichen Schritt hinzufügen. Meine Schritte sind,

  1. Öffnen Sie die App / etc / di.xml und suchen Sie nach Symlink. Überprüfen Sie dies im folgenden Abschnitt.
<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>

Ersetzen Sie Symlink durch Wort kopieren. Sparen.

  1. Löschen Sie alle Ordner in pub / static. Löschen Sie nicht .htaccess und andere Dateien.

  2. Führen Sie xampp als Administrator aus. Führen Sie die Befehlszeile als Administrator aus. Rennen grunt exec:<theme name>.

Bildbeschreibung hier eingeben

Sie werden sehen, es läuft gut.

Dann kannst du rennen grunt less:<theme name>

Bildbeschreibung hier eingeben

Endlich kannst du rennen grunt watch

Bildbeschreibung hier eingeben

Wenn Sie in weniger Dateien (_theme.less oder _extend.less) Änderungen vornehmen, werden automatisch Style-L- und Style-M-CSS-Dateien im Ordner pub / static erstellt.

Ich verwende Magento 2.1 in Windows 10.


Eigentlich brauchen wir keinen ersten Schritt.
Cha

2

Denken Sie daran, die Dateiberechtigungen zu aktualisieren, nachdem Magento diese neuen statischen Dateien erstellt hat. Sie sind nicht im Besitz von www-data und geben daher 404 aus.


1

In meinem Fall war es nicht , weil meine app/etc/di.xmlwar , Magento\Framework\App\View\Asset\MaterializationStrategy\Symlinkwie durch @Chrish erwähnt. Das lag daran, dass eines meiner Module einen Skriptfehler in meiner .phtmlDatei hatte. Ich würde empfehlen, Ihren Code in der .phtmlDatei zu überprüfen . In meinem Fall wurde das Problem durch Korrekturen in meiner Skriptdatei behoben initialize.phtml.


0

Ich fand es wichtig, die richtige Berechtigung für den Apache mit mod_php für die Ordner pub / static und var / zu verwenden. Aus dem Alan Storm-Artikel 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 '{}' + 

Sie sollten das im Server-Terminal ausführen. Das behebt mich 404 Fehler für die Skripte und Bilder.

ps Aber das ist für Linux.


Sie könnten auchchmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
nick.graziano

0

Ich denke, der richtige Weg, dies zu tun, ist von der Kommandozeile: cd in Ihr Magento-Verzeichnis und führen Sie den folgenden Befehl aus:

php bin/magento setup:static-content:deploy

var/cacheVerzeichnis leeren und prüfen.


0

Einfach alle Dateien unter löschen pub/static/*. Magento generiert automatisch die statischen Dateien für Sie, wenn Sie eine Seite laden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.