Error Magento 2 404 para scripts y css

39

He descargado e instalado Magento 2 desde https://github.com/magento/magento2

Pero recibo un error 404 para scripts y cs ubicados en http: // localhost / magento2 / pub / static /

Lo he comprobado, el motor de reescritura de Apache está encendido. Pero aún así, los archivos css y js no se están cargando.

Cuando intento acceder a un archivo directamente desde el navegador, aparece la siguiente excepción.

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}

Mi sistema operativo es Windows 7 y estoy ejecutando el servidor xampp.

piyush_systematix
fuente
Tenga en cuenta que esto se le preguntó en 2015, pero en caso de que otros sigan mirando esta publicación, no debería recibir magento de git. Solo hace esto si está enviando una solicitud de extracción. Magento debe descargarse de la sección de descargas del sitio o instalarse a través del compositor.
Dominic Xigen

Respuestas:

86

Cuando no está en modo de producción, Magento 2 intentará crear enlaces simbólicos para algunos recursos estáticos. Puede cambiar ese comportamiento haciendo lo siguiente.

  1. Abre app/etc/di.xmly encuentra la virtualType name="developerMaterialization"sección. En esa sección encontrará un elemento name="view_preprocessed"que debe modificarse o eliminarse. Puede modificarlo cambiando el contenido de Magento\Framework\App\View\Asset\MaterializationStrategy\SymlinkaMagento\Framework\App\View\Asset\MaterializationStrategy\Copy

  2. Elimine los archivos en pub / static para deshacerse de los enlaces simbólicos existentes. Es posible que tenga cuidado de no eliminar el .htaccessarchivo.

Esto debería resolver su error con el enlace simbólico.

Chris O'Toole
fuente
2
Simplemente eliminar la carpeta pub / static funcionó para mí.
Adam Moss
44
Eliminar el contenido pub / estático no es suficiente en mi caso. Tuve que cambiar el enlace simbólico a Copiar como se menciona en la respuesta anterior.
Haijerome
2
Trabajado como un encanto...!!!!
Neeraj Garg
2
Esto no funcionó para mí, ni siquiera eliminó la carpeta / pub / static. ¿Alguna otra idea?
goncalotomas
2
No funciona para mí :-(
Alaa M. Jaddou
7

Me enfrenté a este problema y trato de resolverlo. Estoy de acuerdo con Chris O'Toole. Agregaré un paso extra. Mis pasos son

  1. Abra la aplicación / etc / di.xml y busque Symlink. Verifíquelo en la siguiente sección.
<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>

Reemplazar enlace simbólico con copiar palabra. Salvar.

  1. Eliminar todas las carpetas en pub / static. No elimine .htaccess y otros archivos.

  2. Ejecute xampp como administrador. Ejecute la línea de comando como administrador. Ejecutar grunt exec:<theme name>.

ingrese la descripción de la imagen aquí

Verás que está funcionando bien.

Entonces puedes correr grunt less:<theme name>

ingrese la descripción de la imagen aquí

Finalmente puedes correr grunt watch

ingrese la descripción de la imagen aquí

Cuando realice cambios en menos archivos (_theme.less o _extend.less), creará automáticamente los archivos style-l y style-m css en la carpeta pub / static.

Estoy ejecutando magento 2.1 en windows 10.

cha
fuente
En realidad no necesitamos el primer paso.
cha
2

Recuerde actualizar los permisos de archivo después de que Magento cree estos nuevos archivos estáticos. No son propiedad de www-data, por lo que darán 404.

Kevin
fuente
1

En mi caso, no fue porque app/etc/di.xmltenía Magento\Framework\App\View\Asset\MaterializationStrategy\Symlinklo mencionado por @Chrish. Fue porque uno de mi módulo tenía un error de script en mi .phtmlarchivo. Recomendaría verificar su código en el .phtmlarchivo. En mi caso, se resolvió haciendo la corrección en mi archivo de script initialize.phtml.

Kamal Singh
fuente
0

Me pareció importante usar el permiso correcto para el apache con mod_php para las carpetas pub / static y var /. Del artículo de 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 '{}' + 

Debe ejecutar eso en la terminal del servidor. Eso me solucionó el error 404 para los scripts y las imágenes.

ps Pero eso es para Linux.

electroide
fuente
También podríachmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
nick.graziano
0

Creo que la forma correcta de hacerlo es desde la línea de comandos: cd a su directorio magento y ejecute el siguiente comando:

php bin/magento setup:static-content:deploy

var/cacheDirectorio vacío y verificar.

kazimt9
fuente
0

Acabo de eliminar todos los archivos debajo pub/static/*. Magento generará automáticamente los archivos estáticos para usted cuando cargue una página.

Paul
fuente
0

Debe ejecutar Xampp (apache, nginx), etc. como administrador para permitirle hacer enlaces simbólicos en Windows (probado con Windows 10).

Liam Mitchell
fuente