Errore Magento 2 404 per script e CSS


39

Ho scaricato e installato Magento 2 da https://github.com/magento/magento2

Ma sto ricevendo un errore 404 per script e cs situati in http: // localhost / magento2 / pub / static /

Ho controllato, il motore di riscrittura di Apache è acceso. Tuttavia, i file css e js non vengono caricati.

Quando provo ad accedere a un file direttamente dal browser, si ottiene la seguente eccezione.

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}

Il mio sistema operativo è Windows 7 e sto eseguendo il server xampp.


Renditi conto che questo è stato chiesto nel 2015, ma nel caso in cui altri ancora guardino questo post, non dovresti ricevere magento da git. Lo fai solo se stai inviando una richiesta pull. Magento dovrebbe essere scaricato dalla sezione download del sito o installato tramite compositore.
Dominic Xigen,

Risposte:


86

Quando non è in modalità di produzione Magento 2 proverà a creare collegamenti simbolici per alcune risorse statiche. È possibile modificare tale comportamento nel modo seguente.

  1. Apri app/etc/di.xmle trova la virtualType name="developerMaterialization"sezione. In quella sezione troverai un oggetto name="view_preprocessed"che deve essere modificato o eliminato. Puoi modificarlo cambiando il contenuto da Magento\Framework\App\View\Asset\MaterializationStrategy\SymlinkaMagento\Framework\App\View\Asset\MaterializationStrategy\Copy

  2. Elimina i file in pub / static per eliminare eventuali collegamenti simbolici esistenti. Si consiglia di fare attenzione a non eliminare il .htaccessfile.

Questo dovrebbe risolvere il tuo errore con il link simbolico.


2
L'eliminazione della cartella pub / static ha funzionato per me.
Adam Moss,

4
Eliminare i contenuti pub / statici non è abbastanza nel mio caso. Ho dovuto modificare il collegamento simbolico in Copia come indicato nella risposta sopra.
Haijerome,

2
Ha funzionato come un fascino ... !!!!
Neeraj Garg,

2
Questo non ha funzionato per me, nemmeno eliminando la cartella / pub / static. Altre idee?
goncalotomas,

2
Non funziona per me :-(
Alaa M. Jaddou,

7

Ho affrontato questo problema e ho cercato di capire. Sono d'accordo con Chris O'Toole. Aggiungerò un ulteriore passaggio. I miei passi sono,

  1. Apri l'app / etc / di.xml e cerca Symlink. Verifica che sia nella sezione seguente.
<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>

Sostituisci Symlink con Copia parola. Salvare.

  1. Elimina tutte le cartelle in pub / static. Non eliminare .htaccess e altri file.

  2. Esegui xampp come amministratore. Esegui la riga di comando come amministratore. Corri grunt exec:<theme name>.

inserisci qui la descrizione dell'immagine

Vedrai che sta funzionando bene.

Quindi puoi correre grunt less:<theme name>

inserisci qui la descrizione dell'immagine

Finalmente puoi correre grunt watch

inserisci qui la descrizione dell'immagine

Quando si apportano modifiche in meno file (_theme.less o _extend.less), verranno automaticamente creati i file css style-le e style-m nella cartella pub / static.

Sto eseguendo Magento 2.1 in Windows 10.


In realtà non abbiamo bisogno del primo passo.
cha

2

Ricorda di aggiornare le autorizzazioni dei file dopo che Magento ha creato questi nuovi file statici. Non sono di proprietà di www-data, quindi forniranno 404.


1

Nel mio caso non è stato perché il mio lo app/etc/di.xmlaveva Magento\Framework\App\View\Asset\MaterializationStrategy\Symlinkmenzionato da @Chrish. Era perché uno dei miei moduli aveva un errore di script nel mio .phtmlfile. Consiglierei di controllare il tuo codice nel .phtmlfile. Nel mio caso è stato risolto apportando correzioni nel mio file di script initialize.phtml.


0

Ho trovato importante usare l'autorizzazione corretta per l'apache con mod_php per le cartelle pub / static e var /. Dall'articolo di 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 '{}' + 

Dovresti eseguirlo nel terminale del server. Ciò mi ha corretto l'errore 404 per gli script e le immagini.

ps Ma questo è per Linux.


Potresti anchechmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
nick.graziano,

0

Penso che il modo corretto per farlo sia dalla riga di comando: cd alla tua directory magento ed esegui il seguente comando:

php bin/magento setup:static-content:deploy

var/cacheDirectory vuota e controllo.


0

Ho appena eliminato tutti i file in pub/static/*. Magento genererà automaticamente i file statici per te quando carichi una pagina.


0

È necessario eseguire Xampp (apache, nginx) ecc. Come amministratore per consentire l'esecuzione di collegamenti simbolici in Windows (testato con Windows 10).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.