Autorizzazioni di scrittura mancanti nella directory pub / static durante l'esecuzione di bin / magento setup: upgrade


19

Il giorno prima, ho aggiornato un nuovo modulo e funzionava normalmente. Ora, quando corro bin/magento setup:upgrade, ricevo l'eccezione di seguito. Ho provato a impostare le autorizzazioni su 777 (o 770) per la pubcartella in Magento 2 ma non funziona.

  [Eccezione]
  Autorizzazioni di scrittura mancanti per le seguenti directory: "pub / static"


sei riuscito a risolvere questo problema? in tal caso, inviare la soluzione.
Reena Parekh,

Hai lo stesso problema?
Thao Pham,

Sì, sto affrontando lo stesso problema. come l'hai risolto?
Reena Parekh,

Commento un po 'di codice di linea nel core. Vuoi fare come me?
Thao Pham,

1
ho pubblicato il mio relsove in post qui sotto. Posso provarci
Thao Pham,

Risposte:


30

TL; DR pub/staticcartella troncata .


Per me, ho avuto un'installazione precedente, che probabilmente aveva alcuni link simbolici e vecchi file che non esistono più.

Il problema checkInstallationFilePermissionsè che controlla le autorizzazioni in modo ricorsivo. File e cartelle. Avevo un link simbolico mancante, che restituiva false sull'assegno se è scrivibile.

Come eseguire il debug:

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

  2. Vai alla riga 143 nel metodo checkRecursiveDirectories

  3. Aggiungi le linee var_dump($subDirectory);var_dump($subDirectory->isWritable());

  4. Riesegui bin/magento setup:upgrade

ora vedrai cosa è veramente sbagliato e puoi risolverlo. Personalmente rimuovo tutto inpub/static , questo sarà il contenuto generato automaticamente quindi non dovresti preoccuparti di questo.


1
Ho rimosso pub / static completamente, dopo aver eseguito l'installazione: aggiornare l'unica cartella all'interno di pub / static è la cartella __requirejs.
Mancano i CSS

come posso ripristinare tutto in pub / static?
Lachezar Raychev,

2
tutto stava andando così bene .... :) ho davvero iniziato a disprezzare questo quadro
Lachezar Raychev,

3
Se rimuovi i contenuti di pub / static, assicurati di non rimuovere pub / static / .htaccess in quanto fa parte della base di codice e non viene ricreato: github.com/magento/magento2/tree/2.0/ pub / static
mttjohnson

Perfecto! Questo è tutto ..
Arvind07,

11

Ho riscontrato questo errore nello sviluppo a causa di un collegamento simbolico interrotto.

Avevo creato un file nella directory di un modulo view/frontend/webin cuideveloper modalità era stato distribuito nella pub/staticdirectory utilizzando un collegamento simbolico che puntava alla directory del modulo in cui è archiviato il file originale.

Ad un certo punto dello sviluppo ho rimosso il file dal mio modulo, ma il collegamento simbolico esisteva ancora pub/static puntare a un file che non esisteva più. Mi aspetto che ciò accada anche se avessi rinominato uno dei file.

Se un sito è in productionmodalità ed è stato bin/magento setup:static-content:deployeseguito, in realtà i file vengono copiati supub/static directory invece di creare collegamenti simbolici.

Per trovare questo collegamento simbolico interrotto ho eseguito un comando dalla shell

find -L . -type l

La rimozione del collegamento simbolico interrotto ha risolto il problema (ad esempio utilizzando find -L . -type l -exec rm {} \;).


Questa è stata la risposta anche al mio problema, grazie mttjohnson!
Joshua Soileau,

4

Nella directory principale di Magento, esegui i comandi seguenti e il problema dovrebbe essere risolto:

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

Ha funzionato per me.


Questo eliminerà .htaccessanche il file. Hai bisogno di un .htaccessfile.
Adarsh ​​Khatri il

2

È necessario impostare le autorizzazioni come descritto nella documentazione ufficiale: http://devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html


1
puoi le autorizzazioni effettive solo causare nel caso l'url cambi.
rob3000,

Ci riprovo ma non funziona
Thao Pham,

Non dimenticare di farlo ricorsivamente in sottodirectory: pub, pub / static, ecc.
Mage2.PRO

la proprietà è importante quanto le autorizzazioni; controlla il link sopra e anche devdocs.magento.com/guides/v2.0/install-gde/prereq/… . Devi avere due utenti; un utente locale e l'utente del server Web
Steve Johnson,

l'idea di impostare le autorizzazioni a livello di applicazione è sbagliata, quindi penso che le persone dovrebbero evitare la documentazione in quella sezione. sarà aggiornato nelle prossime versioni in base ai loro problemi di github
Claudiu Creanga

1

Questo è il mio temporaneo risolto. Commento la riga 744 e 466 in<magento_dir>/setup/src/Magento/Setup/Model/Installer.php .

Questo è il codice di linea:

$this->checkInstallationFilePermissions();

Ho bisogno di una soluzione, non cambiare il file principale.


Il problema è probabilmente dovuto a un link simbolico interrotto (risposta sotto) nella directory pub / static. La rimozione del link simbolico non funzionante dovrebbe risolvere il problema senza modificare i file core.
mttjohnson,


@EnvisionEcommerce il collegamento non funziona.
MagoPsycho,

1

Risolto permesso bin / magento negato

chmod u + x bin / magento



0

Ho avuto lo stesso problema in cui non potevo installare Magento dalla riga di comando. La semplice creazione della cartella ha pub/staticrisolto il problema.


0

Se qualcuno ha questo problema sul sistema operativo Windows. Basta eseguire il comando su un prompt dei comandi dell'amministratore e funzionerà come un incantesimo. Spero che questo aiuti qualcuno.


0

Nel mio caso, eseguire l'errore di aggiornamento tramite un utente non root o un utente con autorizzazioni limitate. Assicurati di eseguire il comando upgrade con un utente con autorizzazioni sufficienti.


0

Ho verificato più volte i permessi di scrittura e tutto è andato bene.

  1. Ho commentato questa riga, il che mi dà un'eccezione.
  2. Quindi ho eseguito l'installazione: aggiornamento.
  3. Ripristinato la riga con l'eccezione
  4. Il problema non si è più riprodotto

0

Eseguire il comando seguente, per i seguenti tre indirizzi IP:

<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" 

0

non usare questo:

rm -r pub/static

rimuoverà tutti i file anche .htaccess

puoi usare questo sarà meglio:

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

dopo quell'uso:

php bin/magento setup:static-content:deploy en_US -f 

-1

basta rimuovere la cartella pub / static dal tuo magento2

rm -r pub/static

quindi distribuire contenuto statico di magento2

php bin/magento setup:static-content:deploy

usando questo processo il mio stesso problema è stato risolto.


4
Non è necessario rimuovere l'intera directory pub / static in quanto contiene un file .htaccess che è importante e il file .htaccess non verrà ricreato su qualsiasi distribuzione di contenuto statico. È possibile eseguire rm -r pub/static/*e ciò dovrebbe evitare di rimuovere il file .htaccess.
mttjohnson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.