Permissões de gravação ausentes no diretório pub / static ao executar a instalação bin / magento: upgrade

19

No dia anterior, atualizei um novo módulo e ele estava funcionando normalmente. Agora, quando executo bin/magento setup:upgrade, recebo a exceção abaixo. Tentei definir permissões para 777 (ou 770) para a pubpasta no Magento 2, mas não está funcionando.

  [Exceção]
  Faltam permissões de gravação nos seguintes diretórios: 'pub / static'

Thao Pham
fonte
você conseguiu resolver esse problema? se sim, pls postar a solução.
Reena Parekh
Você tem o mesmo problema?
Thao Pham
Sim, estou enfrentando o mesmo problema. como você resolveu isso?
Reena Parekh
Comento algum código de linha no núcleo. Você quer fazer como eu?
Thao Pham
1
Eu postei meu relsove no post abaixo. Posso tentar com ele
Thao Pham

Respostas:

30

pub/staticPasta truncada TL; DR .


Para mim, eu tinha uma instalação mais antiga, que provavelmente tinha alguns links simbólicos e arquivos antigos que não existem mais.

O problema checkInstallationFilePermissionsé que ele verifica as permissões recursivamente. Arquivos e pastas. Eu tinha um link simbólico ausente e isso retornava falso no cheque, se for gravável.

Como depurar:

  1. setup/src/Magento/Setup/Model/FilePermissions.php

  2. Ir para a linha 143 no método checkRecursiveDirectories

  3. Adicione as linhas var_dump($subDirectory);var_dump($subDirectory->isWritable());

  4. Executar novamente bin/magento setup:upgrade

agora você verá o que está realmente errado e poderá corrigi-lo. Pessoalmente, eu removo tudopub/static , isso será um conteúdo gerado automaticamente, assim você não deve se preocupar com isso.

Michal-sk
fonte
1
Removai completamente o pub / static, depois de executar a instalação: atualize a única pasta dentro do pub / static é a pasta __requirejs. Css estão faltando, nenhum estilo de modo que nunca .... Man .. eu desejo que eu não fiz isso
Lachezar Raychev
como posso restaurar tudo no pub / static?
Lachezar Raychev
2
tudo estava indo tão bem .... :) eu realmente começar a desprezar esse quadro
Lachezar Raychev
3
Se você remover o conteúdo de pub / static, certifique-se de não remover pub / static / .htaccess, pois faz parte da base de código e não é recriado: github.com/magento/magento2/tree/2.0/ pub / static
mttjohnson,
Perfecto! Era isso ..
Arvind07
11

Eu encontrei esse erro no desenvolvimento por causa de um link simbólico quebrado.

Eu criei um arquivo no view/frontend/webdiretório de um módulo que no developermodo foi implantado no pub/staticdiretório usando um link simbólico que apontava para o diretório do módulo em que o arquivo original está armazenado.

Em algum momento do desenvolvimento, removi o arquivo do meu módulo, mas o link simbólico ainda existia ao pub/staticapontar para um arquivo que não existia mais. Espero que esse também seja o caso se eu tivesse renomeado um dos arquivos.

Se um site está no productionmodo e já foi bin/magento setup:static-content:deployexecutado, ele realmente copia os arquivos para o pub/staticdiretório em vez de criar links simbólicos.

Para encontrar esse link simbólico quebrado, executei um comando do shell

find -L . -type l

A remoção do link simbólico interrompido resolveu o problema (por exemplo, usando find -L . -type l -exec rm {} \;).

mttjohnson
fonte
Esta foi a resposta para o meu problema também, obrigado mttjohnson!
Joshua Soileau
4

Dentro do diretório raiz do Magento, execute os comandos abaixo e seu problema deve ter desaparecido:

$ rm -rf pub/static/*
$ php bin/magento setup:static-content:deploy

Trabalhou para mim.

medina
fonte
Isso também excluirá o .htaccessarquivo. Você precisa de .htaccessarquivo.
Adarsh ​​Khatri 04/11
2

Você deve configurar as permissões conforme descrito na documentação oficial: http://devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html

Mage2.PRO
fonte
1
você pode causar as permissões reais caso o URL seja alterado.
rob3000
I tentar novamente, mas não trabalhar
Thao Pham
Não se esqueça de fazê-lo de forma recursiva nos subdiretórios: bar, pub / estática, etc.
Mage2.PRO
a propriedade é tão importante quanto as permissões; verifique o link acima e também devdocs.magento.com/guides/v2.0/install-gde/prereq/… . Você deve ter dois usuários; um usuário local e o servidor Web
Steve Johnson
toda a idéia de definir as permissões no nível do aplicativo está errada, então acho que as pessoas devem evitar a documentação nessa seção. ele será atualizado em próximas versões de acordo com as suas questões github
Claudiu Creanga
1

Este é o meu temporário resolvido. Eu comento as linhas 744 e 466 em <magento_dir>/setup/src/Magento/Setup/Model/Installer.php.

Este é o código de linha:

$this->checkInstallationFilePermissions();

Preciso de solução, não altere o arquivo principal.

Thao Pham
fonte
O problema provavelmente ocorre devido a um link simbólico quebrado (respondido abaixo) no diretório pub / static. A remoção do link simbólico quebrado deve resolver o problema sem modificar os arquivos principais.
precisa saber é o seguinte
newtips.co/magento/questions/91184/… Isso funcionará
Envision Ecommerce
@EnvisionEcommerce o link não funciona.
precisa saber é o seguinte
1

Permissão de bin / magento corrigida negada

chmod u + x bin / magento

Gentzy
fonte
0

Eu tive o mesmo problema em que não consegui instalar o Magento através da linha de comando. Simplesmente criar a pasta pub/staticresolveu o problema.

Quinten
fonte
0

Se alguém está tendo esse problema no sistema operacional Windows. Basta executar o comando em um prompt de comando do administrador e ele funcionará como um encanto. Espero que isso ajude alguém.

Lakshin Karunaratne
fonte
0

No meu caso, executar o comando upgrade através de um usuário não raiz ou um usuário com permissões limitadas estava causando o erro. Certifique-se de executar o comando upgrade com um usuário com permissões suficientes.

Arvind07
fonte
0

Eu verifiquei muitas vezes as permissões de gravação e tudo estava bem.

  1. Comentei esta linha, o que me lança uma exceção.
  2. Então eu executei o setup: upgrade.
  3. Revertida a linha com exceção
  4. O problema não se reproduziu mais
zhartaunik
fonte
0

Execute o seguinte comando, para os três endereços IP a seguir:

<Magento-Directory>php bin\magento maintenance:allow-ips 127.0.0.1, 
<Magento-Directory>php bin\magento maintenance:allow-ips "the ip of my localhost given by the NAT-Router" and
<Magento-Directory>php bin\magento maintenance:allow-ips  "the ip of the NAT-Router" 
Berega
fonte
0

não use isso:

rm -r pub/static

ele removerá todos os arquivos, mesmo os arquivos .htaccess

você pode usar isso será melhor:

rm -rf pub/static/frontend
rm -rf pub/static/adminhtml

após esse uso:

php bin/magento setup:static-content:deploy en_US -f 
Aqeel Hussein
fonte
-1

basta remover a pasta pub / static do seu magento2

rm -r pub/static

então implante conteúdo estático do magento2

php bin/magento setup:static-content:deploy

usando esse processo, meu mesmo problema foi resolvido.

Abhishek
fonte
4
Você não deve remover o diretório pub / static inteiro, pois ele contém um arquivo .htaccess importante e o arquivo .htaccess não será recriado em nenhuma implantação de conteúdo estático. Você pode executar rm -r pub/static/*e isso deve evitar a remoção do arquivo .htaccess.
precisa saber é o seguinte