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.

Skovsgaard
fonte
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.

Fayyaz Khattak
fonte
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.

Keyur Shah
fonte
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

KAndy
fonte
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.

snez
fonte
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.

negar vachhani
fonte
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

Quan Le
fonte
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