A instalação local do Magento 2 não gera arquivos na pasta pub / static


15

Acabei de instalar o Magento 2 Community Edition com dados de amostra (baixados do site e não instalados com o compositor) localmente via MAMP. O processo de instalação foi bem-sucedido, mas todos os arquivos na pasta pub / static estão ausentes, exceto .htaccess. Isso significa que todos os css, js etc. retornam 404 para o front-end e o back-end.

Passei várias horas tentando consertar isso sem sorte. Isto é o que eu fiz até agora:

  • Alterado Options Indexes FollowSymLinks AllowOverridede 'None' para 'All' no /MAMP/conf/apache/httpd.conf e reiniciou o MAMP
  • Certifique- LoadModule rewrite_module modules/mod_rewrite.sose de não fazer comentários no httpd.conf
  • Configurar um domínio de desenvolvimento (magento.dev) no MAMP
  • Tentei rodar php bin/magento setup:static-content:deployna raiz magento.dev usando o Terminal. No entanto, isso retorna:

Erro fatal: Classe 'Local' não encontrada em /Applications/MAMP/htdocs/magento.dev/vendor/magento/framework/Locale/Bundle/DataBundle.php na linha 64

  • RewriteBase não comentado e alterado para RewriteBase /no arquivo .htaccess no diretório raiz magento.dev.
  • Defina o Magento no modo de desenvolvimento
  • Limpando o cache manualmente e executando php bin/magento setup:static-content:deploynovamente

A maioria dos guias e posts no fórum me diz para executar: php bin/magento setup:static-content:deploymas não tenho certeza, se estou fazendo isso corretamente.

SO: OSX 10.11.2

Versão MAMP: 3.5

Versão PHP: 7.0

Versão Apache: 2.4.16

Versão do MySQL: 5.6.25

Qualquer ajuda seria apreciada.


Estou no 2.2.2 instalado no servidor CentOS. Nada nesta página funciona. Para ter qualquer estilo, devo executar php bin/magento setup:static-content:deploy -f e esperar 80 segundos.
— Chris K

Respostas:


15

SOLUÇÃO # 1 (SE VOCÊ QUER EDITAR ARQUIVO XML)

Gostaria que você baixasse o zip do Magento 2 magentocommerce.com/download, crie um novo banco de dados no phpmyadmin , extraia o zip na pasta htdocs . Instale o Magento 2, mas não use o host local, use 127.0.0.1 no URL da loja e no URL do administrador. Após a instalação bem-sucedida, NÃO execute o magento.

Agora vamos limpar / excluir caches e sessões do Magento 2. Vá para os seguintes caminhos e exclua tudo:

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

Quando o Magento 2 não está no modo de produção, ele tenta criar links simbólicos para alguns recursos estáticos no servidor local. Temos que mudar esse comportamento do Magento 2, indo para editar o ROOT > app > etc > di.xmlarquivo. Abra di.xmlno seu editor de código favorito, encontre a virtualType name="developerMaterialization"seção. Nessa seção abaixo, você encontrará um item <item name="view_preprocessed" xsi:type="object">que precisa ser modificado. Você pode modificá-lo alterando o seguinte conteúdo:

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

Para:

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

Agora, na última etapa, exclua também os arquivos antigos gerados no ROOT > pub > static > DELETE ALL EXCEPT .HTACCESS

Eu pessoalmente tentei no meu host local usando MAMP, EasyPHP DevServer, Xampp e Wampp e instalei e usei com sucesso o Magento 2. Para mais informações, acesse este link: Magento 2 CSS e JavaScript não carregam da pasta correta

SOLUÇÃO # 2

Instale o Composer. Agora eu gostaria que você baixasse o Magento 2 zip magentocommerce.com/download, crie um novo banco de dados no phpmyadmin , extraia o zip na pasta htdocs . Instale o Magento 2, mas não use o host local, use 127.0.0.1 no URL da loja e no URL do administrador. Após a instalação bem-sucedida, NÃO execute o magento.

Agora vamos verificar a instalação do Composer, implantar conteúdo estático, limpar / liberar o cache do Magento e reindexar os blocos do Magento 2. Para executar todas as ações acima, pressione WINDOWS KEY + R para abrir a caixa de diálogo EXECUTAR e digite “cmd” para abrir o prompt de comando.

Digite “ cd PATH_TO_YOUR_MAGENTO2_FILES ” para entrar no diretório ROOT do Magento 2.

Agora, para verificar a instalação do Composer no diretório acima, digite " instalação do compositor ".

Se houver algum erro nesta etapa, verifique a instalação do Composer

Nesta etapa, estamos configurando conteúdo estático para implantar em nossa loja Magento. Para fazer isso, digite “ php bin / magento setup: static-content: deploy ”.

Se você receber algum erro, verifique sua variável de ambiente PHP.EXE e PHP.INI

Limpe / Limpe o cache do Magento digitando “ php bin / magento cache: flush ” no CMD.

E, finalmente, para Reindex Magento Static Blocks, digite “ php bin / magento indexer: reindex ”.

Você terminou a instalação bem-sucedida do Magento 2.


A resposta foi editada.
— Fayyaz Khattak

Greate! Eu tentei a solução 1 e ele funciona para mim .. Obrigado Khatak sb
— Muhammad Azeem

Bem-vindo @MuhammadAzeem
— Fayyaz Khattak

@RajaKhoury De nada!
— Fayyaz Khattak

Solução 1 funciona para mim! Muito obrigado !!
— Daniel Silva

5

Tente executar o comando abaixo

php bin/magento setup:static-content:deploy

E se ocorrer algum erro ao executar este comando, como o arquivo ausente, como você já disse, compare a estrutura do arquivo do projeto com a nova magento2. Se algum arquivo estiver faltando no seu projeto, copie o arquivo apropriado no seu projeto.

E se você tiver algum outro erro, poste um erro na sua pergunta para que alguém possa responder sua pergunta.


Obrigado por uma resposta rápida. Eu farei isso. Onde exatamente e como executo esse comando?
— precisa saber é o seguinte

@Skovsgaard você pode executar este comando a partir de seu terminal, mas certifique-se de que você está no diretório magento2 do terminal
— Keyur Shah

Parece que não há arquivos ausentes. O Magento instalado obviamente contém mais arquivos, porém relacionados ao processo de instalação. Eu recebo este erro: Fatal error: Class 'Locale' not found in /Applications/MAMP/htdocs/magento.dev/vendor/magento/framework/Locale/Bundle/DataBundle.php on line 64depois de executar php bin/magento setup:static-content:deployno diretório raiz.
— precisa saber é o seguinte

Eu não fui realmente útil. Desculpe.
— precisa saber é o seguinte

2

Parece que a intlextensão não está carregada na sua versão de console do php. Verifique se você usa a mesma versão / configurações para a versão apache e cli do php.

O MacOsX pré-instalou a versão do php e alguns pacotes que instalam o php não alteram o link simbólico para a sessão do terminal. Como resultado, você pode ter uma versão diferente do php instalada ao mesmo tempo.

PS: Proponho usar o vagrant no Mac OS. está funcionando muito bem se usar nfs para compartilhamento de arquivos


Aha! O php pré-instalado (cli) é apenas 5.5.30. O Apache pré-instalado é 2.4.16 (não sei como verificar a versão apache do MAMP se o MAMP também instalar o Apache separadamente). Então eu tenho que atualizar a versão pré-instalada para 7 e também instalar a extensão intl (cli ou mamp?)? Vagrant parece avançado demais para um noob como eu.
— Skovsgaard

Não consigo responder perguntas específicas do Mac, mas há pelo menos duas maneiras de verificar sua versão do PHP: php -v(que mostra qual versão o PHP executa como) e usando um phpinfo.php , que mostra qual versão do PHP o servidor da web executa.
— Steve Johnson

Ok, então o MAMP executa o PHP 7 e o Apache 2.2.29. Minha máquina local executa o PHP 5.5.30 e o Apache 2.4.16. Então, o próximo passo é atualizar o PHP da máquina local para 7?
— Skovsgaard

Por favor, tente usar caminho completo para binário php7
— Kandy

2

Se tudo mais falhar, remova estes diretórios:

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

Isso funcionará se você tiver links simbólicos quebrados nesses diretórios.


1
.htaccess nunca deve ser excluído. Eu também cometi esse erro e perdi horas.
— Tahir Yasin

1

limpar page_cache, di, view_process, cache

em seguida, dê a permissão adequada para pastas e arquivos.

em seguida, execute a php bin/magento setup:static-content:deploypartir da sua pasta raiz.

verifique pub / estático.

Eu espero que isso te ajude.


Onde e como eu corro clear page_cache, di ,view_process, cache? É uma instalação local, portanto, como administrador do meu computador, tenho todas as permissões de leitura / gravação. Existem outras permissões que não conheço?
— Skovsgaard

se você estiver usando local do que dar total permissão para root-pasta
— Vachhani denish

todas as pastas estão em var / limpar todas as pastas e dar permissão total para a pasta.
— Vachhani denish

1

Você instalou composere executou composer initno diretório magento2? Caso contrário, tente executar o comandophp bin/magento setup:static-content:deploy


O Composer está instalado na minha máquina, sim, mas não o usei para instalar o Magento 2. Simplesmente baixei o .zip do site deles, descompactado e instalado. Se eu executar o composer initcomposer, solicite que eu configure o composer.json config, então acho que isso não ajudará.
— Skovsgaard
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.