Erro Magento 2 404 para scripts e css

39

Eu baixei e instalei o Magento 2 em https://github.com/magento/magento2

Mas estou recebendo o erro 404 para scripts e cs localizados em http: // localhost / magento2 / pub / static /

Eu verifiquei, o mecanismo de reescrita do Apache está ativado. Mas ainda assim, os arquivos css e js não estão carregando.

Quando tento acessar um arquivo diretamente do navegador, ele dá a seguinte exceção.

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}

Meu sistema operacional é o Windows 7 e estou executando o servidor xampp.

piyush_systematix
fonte
Perceba que isso foi solicitado em 2015, mas no caso de outros ainda olharem para este post, você não deveria estar recebendo magento do git. Você só faz isso se estiver enviando uma solicitação de recebimento. O Magento deve ser baixado da seção de download do site ou instalado via compositor.
Dominic Xigen 30/06

Respostas:

86

Quando não estiver no modo de produção, o Magento 2 tentará criar links simbólicos para alguns recursos estáticos. Você pode alterar esse comportamento fazendo o seguinte.

  1. Abra app/etc/di.xmle encontre a virtualType name="developerMaterialization"seção. Nessa seção, você encontrará um item name="view_preprocessed"que precisa ser modificado ou excluído. Você pode modificá-lo alterando o conteúdo de Magento\Framework\App\View\Asset\MaterializationStrategy\SymlinkparaMagento\Framework\App\View\Asset\MaterializationStrategy\Copy

  2. Exclua os arquivos em pub / static para se livrar de quaisquer links simbólicos existentes. Você pode ter cuidado para não excluir o .htaccessarquivo.

Isso deve resolver seu erro com o link simbólico.

Chris O'Toole
fonte
2
Apenas excluir a pasta pub / static funcionou para mim.
Adam Moss
4
Excluir o conteúdo estático / do pub não é suficiente no meu caso. Eu tive que mudar o link simbólico para copiar, conforme mencionado na resposta acima.
Haijerome
2
Trabalhou como um encanto ... !!!!
precisa
2
Isso não funcionou para mim, nem mesmo excluindo a pasta / pub / static. Alguma outra ideia?
Goncalotomas
2
Não funciona para mim :-(
Alaa M. Jaddou
7

Eu enfrentei esse problema e tentei descobrir. Eu concordo com Chris O'Toole. Vou adicionar passo extra. Meus passos são,

  1. Abra o aplicativo / etc / di.xml e pesquise o Symlink. Verifique se está na seção a seguir.
<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>

Substitua o Symlink por Copiar palavra. Salve .

  1. Exclua todas as pastas em pub / static. Não exclua .htaccess e outros arquivos.

  2. Execute o xampp como administrador. Execute a linha de comando como administrador. Corra grunt exec:<theme name>.

insira a descrição da imagem aqui

Você verá que está funcionando bem.

Então você pode correr grunt less:<theme name>

insira a descrição da imagem aqui

Finalmente você pode executar grunt watch

insira a descrição da imagem aqui

Quando você faz alterações em menos arquivos (_theme.less ou _extend.less), ele cria automaticamente arquivos estilo-le estilo-m css na pasta pub / static.

Estou executando o magento 2.1 no windows 10.

cha
fonte
Na verdade, não precisamos do primeiro passo.
cha
2

Lembre-se de atualizar as permissões de arquivo depois que o Magento criar esses novos arquivos estáticos. Eles não são de propriedade de www-data, portanto, fornecerão 404.

Kevin
fonte
1

No meu caso, não foi porque o meu app/etc/di.xmltinha Magento\Framework\App\View\Asset\MaterializationStrategy\Symlinkcomo mencionado pelo @Chrish. Foi porque um dos meus módulos teve um erro de script no meu .phtmlarquivo. Eu recomendaria verificar seu código no .phtmlarquivo. No meu caso, foi resolvido fazendo a correção no meu arquivo de script initialize.phtml.

Kamal Singh
fonte
0

Achei importante usar a permissão correta para o apache com mod_php para o pub / static e var / folders. No artigo 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 '{}' + 

Você deve executar isso no terminal do servidor. Isso me corrigiu o erro 404 para os scripts e imagens.

ps Mas isso é para o Linux.

eletróide
fonte
Você também poderiachmod -R 777 /path/to/magento2/pub/static /path/to/magento2/var
nick.graziano
0

Eu acho que a maneira correta de fazer isso é da linha de comando: cd para o diretório magento e execute o seguinte comando:

php bin/magento setup:static-content:deploy

var/cacheDiretório vazio e cheque.

kazimt9
fonte
0

Apenas excluiu todos os arquivos em pub/static/*. O Magento gera automaticamente os arquivos estáticos para você quando você carrega uma página.

Paulo
fonte
0

Você deve executar o Xampp (apache, nginx) etc. como administrador para permitir que ele faça Symlinks no Windows (testado com o Windows 10).

Liam Mitchell
fonte