Erreur Magento 2 404 pour les scripts et les css

39

J'ai téléchargé et installé Magento 2 à l' adresse https://github.com/magento/magento2.

Mais je reçois une erreur 404 pour les scripts et les cs situés dans http: // localhost / magento2 / pub / static /

J'ai vérifié, le moteur de réécriture Apache est activé. Mais quand même, les fichiers css et js ne se chargent pas.

Lorsque j'essaie d'accéder à un fichier directement à partir du navigateur, il donne l'exception suivante.

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}

Mon système d'exploitation est Windows 7 et j'utilise xampp server.

piyush_systematix
la source
Réalisez que cela a été demandé en 2015, mais au cas où d'autres encore regarderaient ce message, vous ne devriez pas recevoir magento de git. Vous ne le faites que si vous soumettez une demande d'extraction. Magento doit être téléchargé à partir de la section de téléchargement du site ou installé via composer.
Dominic Xigen

Réponses:

86

Lorsqu'il n'est pas en mode de production, Magento 2 essaiera de créer des liens symboliques pour certaines ressources statiques. Vous pouvez changer ce comportement en procédant comme suit.

  1. Ouvrez app/etc/di.xmlet trouvez la virtualType name="developerMaterialization"section. Dans cette section, vous trouverez un élément name="view_preprocessed"qui doit être modifié ou supprimé. Vous pouvez le modifier en changeant le contenu de Magento\Framework\App\View\Asset\MaterializationStrategy\SymlinkàMagento\Framework\App\View\Asset\MaterializationStrategy\Copy

  2. Supprimez les fichiers sous pub / static pour vous débarrasser des liens symboliques existants. Vous voudrez peut-être faire attention à ne pas supprimer le .htaccessfichier.

Cela devrait résoudre votre erreur avec le lien symbolique.

Chris O'Toole
la source
2
Simplement supprimer le dossier pub / static a fonctionné pour moi.
Adam Moss
4
Supprimer le contenu pub / static ne suffit pas dans mon cas. Je devais changer le lien symbolique vers Copier comme indiqué dans la réponse ci-dessus.
Haijerome
2
Travaillé comme un charme ... !!!!
Neeraj Garg
2
Cela n'a pas fonctionné pour moi, pas même la suppression du dossier / pub / static. D'autres idées?
Goncalotomas
2
Ne fonctionne pas pour moi :-(
Alaa M. Jaddou
7

J'ai fait face à ce problème et essayer de comprendre. Je suis d'accord avec Chris O'Toole. Je vais ajouter étape supplémentaire. Mes pas sont,

  1. Ouvrez l'application / etc / di.xml et recherchez Symlink. Vérifiez qu'il est dans la section suivante.
<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>

Remplacez le lien symbolique par le mot copier. Sauver.

  1. Supprimer tous les dossiers dans pub / static. Ne supprimez pas les fichiers .htaccess et autres.

  2. Exécutez xampp en tant qu'administrateur. Exécutez la ligne de commande en tant qu'administrateur. Courez grunt exec:<theme name>.

entrez la description de l'image ici

Vous verrez qu'il fonctionne bien.

Ensuite, vous pouvez courir grunt less:<theme name>

entrez la description de l'image ici

Enfin, vous pouvez courir grunt watch

entrez la description de l'image ici

Lorsque vous modifiez moins de fichiers (_theme.less ou _extend.less), les fichiers style-l et style-m css sont automatiquement créés dans le dossier pub / static.

J'exécute magento 2.1 sous Windows 10.

cha
la source
En fait, nous n'avons pas besoin de la première étape.
cha
2

N'oubliez pas de mettre à jour les autorisations de fichiers après que Magento ait créé ces nouveaux fichiers statiques. Ils ne sont pas la propriété de www-data, ils donneront donc 404.

Kevin
la source
1

Dans mon cas, ce n’était pas parce que my app/etc/di.xmlavait, Magento\Framework\App\View\Asset\MaterializationStrategy\Symlinkcomme mentionné par @Chrish. C'est parce qu'un de mes modules avait une erreur de script dans mon .phtmlfichier. Je recommanderais de vérifier votre code dans le .phtmlfichier. Dans mon cas, le problème a été résolu en corrigeant mon fichier de script initialize.phtml.

Kamal Singh
la source
0

J'ai trouvé important d'utiliser l'autorisation correcte pour apache avec mod_php pour les répertoires pub / static et var /. Extrait de l'article d'Alan Storm http://alanstorm.com/magento_2_adding_frontend_files_to_votre_module

find /path/to/magento2/pub/static -exec chmod 777 '{}' +
find /path/to/magento2/var/ -exec chmod 777 '{}' + 

Vous devriez l'exécuter dans le terminal du serveur. Cela m'a corrigé l'erreur 404 pour les scripts et les images.

ps Mais c'est pour le Linux.

electro
la source
Vous pourriez égalementchmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
nick.graziano
0

Je pense que la bonne façon de faire est de la ligne de commande: cd dans votre répertoire magento et lancez la commande suivante:

php bin/magento setup:static-content:deploy

Vider le var/cacherépertoire et vérifier.

kazimt9
la source
0

Vient de supprimer tous les fichiers sous pub/static/*. Magento générera automatiquement les fichiers statiques pour vous lorsque vous chargerez une page.

Paul
la source
0

Vous devez exécuter Xampp (apache, nginx), etc. en tant qu'administrateur pour lui permettre de créer des liens symboliques sous Windows (testé avec Windows 10).

Liam Mitchell
la source