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.