La instalación local de Magento 2 no genera archivos en la carpeta pub / static

15

Acabo de instalar Magento 2 Community Edition con datos de muestra (descargados de su sitio web y no instalados con el compositor) localmente a través de MAMP. El proceso de instalación fue exitoso, pero faltan todos los archivos en la carpeta pub / static excepto .htaccess. Eso significa que todos los css, js, etc. devuelven 404 para el frontend y el backend.

He pasado varias horas tratando de arreglar esto sin suerte. Esto es lo que he hecho hasta ahora:

  • Cambió Options Indexes FollowSymLinks AllowOverridede 'Ninguno' a 'Todos' en /MAMP/conf/apache/httpd.conf y reinició MAMP
  • Asegúrese de que no LoadModule rewrite_module modules/mod_rewrite.soesté comentado en httpd.conf
  • Configurar un dominio de desarrollo (magento.dev) en MAMP
  • php bin/magento setup:static-content:deployIntenté ejecutar en la raíz magento.dev usando Terminal. Sin embargo, esto devuelve:

Error fatal: la clase 'Locale' no se encuentra en /Applications/MAMP/htdocs/magento.dev/vendor/magento/framework/Locale/Bundle/DataBundle.php en la línea 64

  • Descomentado y cambiado RewriteBase a RewriteBase /en el archivo .htaccess en el directorio raíz magento.dev.
  • Establecer Magento en modo de desarrollo
  • Borrar el caché manualmente y php bin/magento setup:static-content:deployvolver a ejecutar

La mayoría de las guías y publicaciones del foro me dicen que corra, php bin/magento setup:static-content:deploypero no estoy seguro si lo estoy haciendo correctamente.

OS: OSX 10.11.2

Versión MAMP: 3.5

Versión de PHP: 7.0

Versión de Apache: 2.4.16

Versión de MySQL: 5.6.25

Cualquier ayuda sería apreciada.

Skovsgaard
fuente
Estoy en 2.2.2 instalado en el servidor CentOS. Nada en esta página funciona. Para tener estilo, debo correr php bin/magento setup:static-content:deploy -f y esperar 80 segundos.
Chris K

Respuestas:

15

SOLUCIÓN # 1 (SI DESEA EDITAR ARCHIVO XML)

Me gustaría que descargue Magento 2 zip de magentocommerce.com/download, cree un nuevo db en phpmyadmin , extraiga zip en la carpeta htdocs . Instale Magento 2 pero no use localhost use 127.0.0.1 en la URL de la tienda y la URL del administrador. Después de una instalación exitosa NO ejecute magento.

Ahora vamos a borrar / eliminar cachés y sesiones de Magento 2. Vaya a las siguientes rutas y elimine todo:

ROOT > var > cache > *DELETE ALL*
ROOT > var > page_cache > *DELETE ALL*
ROOT > var > session > *DELETE ALL*

Cuando Magento 2 no está en modo de producción, intentará crear enlaces simbólicos para algunos recursos estáticos en el servidor local. Tenemos que cambiar ese comportamiento de Magento 2 yendo a editar el ROOT > app > etc > di.xmlarchivo. Abre di.xmlen tu editor de código favorito, encuentra la virtualType name="developerMaterialization"sección. En esa sección a continuación, encontrará un elemento <item name="view_preprocessed" xsi:type="object">que debe modificarse. Puede modificarlo cambiando el siguiente contenido:

Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink

A:

Magento\Framework\App\View\Asset\MaterializationStrategy\Copy

Ahora último paso, también elimine los archivos antiguos generados en ROOT > pub > static > DELETE ALL EXCEPT .HTACCESS

Personalmente lo probé en mi host local usando MAMP, EasyPHP DevServer, Xampp y Wampp e instalé con éxito y usé Magento 2. Para más información, puede consultar este enlace: Magento 2 CSS y JavaScript no se cargan desde la carpeta correcta

SOLUCIÓN # 2

Instalar Composer. Ahora me gustaría que descargue Magento 2 zip desde magentocommerce.com/download, cree un nuevo db en phpmyadmin , extraiga zip en la carpeta htdocs . Instale Magento 2 pero no use localhost use 127.0.0.1 en la URL de la tienda y la URL del administrador. Después de una instalación exitosa NO ejecute magento.

Ahora vamos a verificar la instalación de Composer, implementar contenido estático, borrar / vaciar el caché de Magento y reindexar los bloques de Magento 2. Para realizar todas las acciones anteriores, presione WINDOWS KEY + R para abrir el cuadro de diálogo EJECUTAR y escriba "cmd" para abrir el símbolo del sistema.

Escriba " cd PATH_TO_YOUR_MAGENTO2_FILES " para ingresar en el directorio ROOT de Magento 2.

Ahora para verificar la instalación de Composer en el directorio anterior, escriba " instalación de composer ".

Si obtiene algún error en este paso, verifique la instalación de Composer

En este paso, configuraremos contenido estático para implementar en nuestra tienda Magento. Para realizar esto, escriba " php bin / magento setup: static-content: deploy ".

Si obtiene algún error, verifique su variable de entorno PHP.EXE y PHP.INI

Borrar / Vaciar caché de Magento escribiendo " php bin / magento cache: flush " en CMD.

Y, por último, para Reindex Magento Static Blocks, escriba " php bin / magento indexer: reindex ".

Has terminado con la instalación exitosa de Magento 2.

Fayyaz Khattak
fuente
La respuesta ha sido editada.
Fayyaz Khattak
Greate! Probé la solución 1 y funciona para mí ... Gracias Khatak sb
Muhammad Azeem
Bienvenido @
Muhammad
@RajaKhoury ¡De nada!
Fayyaz Khattak
¡La solución 1 funciona para mí! Muchas gracias !!
Daniel Silva el
5

Intenta ejecutar el siguiente comando

php bin/magento setup:static-content:deploy

Y si da algún error al ejecutar este comando, como un archivo que falta como ya dijo, compare la estructura de archivos de su proyecto con la magento2estructura de archivos nueva . Si falta algún archivo en su proyecto, copie el archivo apropiado en su proyecto.

Y si tiene algún otro error, publique un error en su pregunta para que alguien pueda responderla.

Keyur Shah
fuente
Gracias por una respuesta rápida. Yo haré eso. ¿Dónde exactamente y cómo ejecuto este comando?
Skovsgaard el
@Skovsgaard puede ejecutar este comando desde su terminal pero asegúrese de estar en el directorio magento2 desde la terminal
Keyur Shah
Parece que no faltan archivos. El Magento instalado obviamente contiene más archivos que están relacionados con el proceso de instalación. Me sale este error: Fatal error: Class 'Locale' not found in /Applications/MAMP/htdocs/magento.dev/vendor/magento/framework/Locale/Bundle/DataBundle.php on line 64después de ejecutar php bin/magento setup:static-content:deployen el directorio raíz.
Skovsgaard el
No fui realmente útil. Lo siento.
Skovsgaard
2

Parece que la intlextensión no está cargada en tu versión de consola de php. Verifique que use la misma versión / configuración para apache y la versión cli de php.

MacOsX tiene una versión preinstalada de php y algunos paquetes que instalan php no cambian el enlace simbólico para la sesión de terminal. Como resultado, puede tener diferentes versiones de php instaladas al mismo tiempo.

PD: propongo usar vagabundo en Mac OS. funciona bastante bien si usa nfs para compartir archivos

Kandy
fuente
¡Ajá! El php (cli) preinstalado es solo 5.5.30. Apache preinstalado es 2.4.16 (no sé cómo verificar la versión apache de MAMP si MAMP también instala Apache por separado). ¿Entonces tengo que actualizar la versión preinstalada a 7 y también instalar la extensión intl (cli o mamp?)? Vagabundo parece demasiado avanzado para un novato como yo.
Skovsgaard
No puedo responder preguntas específicas de Mac, pero hay al menos dos formas de verificar su versión de PHP: php -v(que muestra en qué versión se ejecutan los comandos de PHP) y usando un phpinfo.php , que muestra qué versión de PHP ejecuta el servidor web.
Steve Johnson el
Bien, entonces MAMP ejecuta PHP 7 y Apache 2.2.29. Mi máquina local ejecuta PHP 5.5.30 y Apache 2.4.16. Entonces, ¿el siguiente paso es actualizar el PHP de la máquina local a 7?
Skovsgaard
Por favor, intente utilizar ruta completa al binario php7
Kandy
2

Si todo lo demás falla, pode estos directorios:

rm -rf pub/static/*    # DO NOT DELETE .htaccess
rm -rf var/view_preprocessed/*
php bin/magento setup:static-content:deploy

Esto funcionará si tienes enlaces simbólicos rotos en esos directorios.

snez
fuente
1
.htaccess nunca debe eliminarse. También cometí este error y perdí horas
Tahir Yasin
1

borrar page_cache, di, view_process, cache

luego otorgue el permiso adecuado a las carpetas y archivos.

luego ejecuta php bin/magento setup:static-content:deploydesde tu carpeta raíz.

compruebe pub / static.

Espero que esto ayude.

denish vachhani
fuente
¿Dónde y cómo corro clear page_cache, di ,view_process, cache? Es una instalación local, por lo que como administrador super de mi computadora tengo todos los permisos de lectura / escritura. ¿Hay otros permisos que desconozco?
Skovsgaard
si está usando local que le da permiso completo a la carpeta raíz
denish vachhani el
todas las carpetas están en var / clear todas las carpetas y dan permiso completo a la carpeta.
denish vachhani
1

¿Has instalado composery ejecutado composer initen el directorio magento2? Si no, inténtalo y luego ejecuta el comandophp bin/magento setup:static-content:deploy

Quan Le
fuente
Composer está instalado en mi máquina, sí, pero no lo utilicé para instalar Magento 2. Simplemente descargué el .zip de su sitio web, lo descomprimí e instalé. Si ejecuto composer initcomposer me pide que configure composer.json config, así que supongo que eso no ayudará.
Skovsgaard el