Autorisations d'écriture manquantes dans le répertoire pub / static lors de l'exécution de la configuration bin / magento: mise à niveau

19

La veille, j'ai mis à jour un nouveau module et il fonctionnait normalement. Maintenant, lorsque je cours bin/magento setup:upgrade, je reçois l'exception ci-dessous. J'ai essayé de définir des autorisations sur 777 (ou 770) pour le pubdossier dans Magento 2 mais cela ne fonctionne pas.

  [Exception]
  Autorisations d'écriture manquantes dans les répertoires suivants: 'pub / static'

Thao Pham
la source
avez-vous réussi à résoudre ce problème? Si c'est le cas, veuillez poster la solution.
Reena Parekh
Avez-vous le même problème?
Thao Pham
oui je suis confronté au même problème. comment l'avez-vous résolu?
Reena Parekh
Je commente un code de ligne dans le noyau. Voulez-vous faire comme moi?
Thao Pham
1
j'ai posté mon relsove dans le post ci-dessous. Je peux essayer avec
Thao Pham

Réponses:

30

pub/staticDossier tronqué TL; DR .


Pour moi, j'avais une installation plus ancienne, qui avait probablement des liens symboliques et d'anciens fichiers qui n'existent plus.

Le problème checkInstallationFilePermissionsest qu'il vérifie les autorisations de manière récursive. Fichiers et dossiers. Il me manquait un lien symbolique, et celui-ci est retourné faux sur le chèque s'il est accessible en écriture.

Comment déboguer:

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

  2. Aller à la ligne 143 dans la méthode checkRecursiveDirectories

  3. Ajoutez les lignes var_dump($subDirectory);var_dump($subDirectory->isWritable());

  4. Re run bin/magento setup:upgrade

vous verrez maintenant ce qui ne va vraiment pas et vous pouvez le réparer. Personnellement, je supprime toutpub/static , ce sera du contenu généré automatiquement, vous ne devriez donc pas vous en inquiéter.

Michal-sk
la source
1
J'ai complètement supprimé pub / static, après avoir exécuté le programme d'installation: mettez à niveau le seul dossier à l'intérieur de pub / static est le dossier __requirejs. Les CSS manquent, pas de style quoi que ce soit ... Mec ... j'aurais aimé ne pas l'avoir fait
Lachezar Raychev
comment puis-je tout restaurer dans pub / statique?
Lachezar Raychev
2
tout allait si bien .... :) je commence vraiment à mépriser ce cadre
Lachezar Raychev
3
Si vous supprimez le contenu de pub / static, assurez-vous de ne pas supprimer pub / static / .htaccess car il fait partie de la base de code et n'est pas recréé: github.com/magento/magento2/tree/2.0/ pub / statique
mttjohnson
Perfecto! C'était ça ..
Arvind07
11

J'ai rencontré cette erreur de développement en raison d'un lien symbolique rompu.

J'avais créé un fichier dans le view/frontend/webrépertoire d' un module qui en developermode était déployé dans le pub/staticrépertoire en utilisant un lien symbolique qui pointait vers le répertoire du module où le fichier d'origine est stocké.

À un moment donné du développement, j'ai supprimé le fichier de mon module, mais le lien symbolique existait toujours pour pub/staticpointer vers un fichier qui n'existait plus. Je pense que ce serait également le cas si j'avais renommé l'un des fichiers.

Si un site est en productionmode et a été bin/magento setup:static-content:deployexécuté, cela copie en fait les fichiers dans le pub/staticrépertoire au lieu de créer des liens symboliques.

Afin de trouver ce lien symbolique rompu, j'ai exécuté une commande à partir du shell

find -L . -type l

La suppression du lien symbolique rompu a résolu le problème (par exemple en utilisant find -L . -type l -exec rm {} \;).

mttjohnson
la source
C'était aussi la réponse à mon problème, merci mttjohnson!
Joshua Soileau
4

Dans votre répertoire racine Magento, exécutez les commandes ci-dessous et votre problème devrait avoir disparu:

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

A travaillé pour moi.

médina
la source
Cela supprimera .htaccességalement le fichier. Vous avez besoin d'un .htaccessfichier.
Adarsh ​​Khatri
2

Vous devez configurer les autorisations telles qu'elles sont décrites dans la documentation officielle: http://devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html

Mage2.PRO
la source
1
pouvez-vous les autorisations réelles juste provoquer au cas où l'url change.
rob3000
J'essaye encore mais ça ne marche pas
Thao Pham
N'oubliez pas de le faire récursivement dans les sous-répertoires: pub, pub / statique, etc.
Mage2.PRO
la propriété est aussi importante que les autorisations; vérifiez le lien ci-dessus et aussi devdocs.magento.com/guides/v2.0/install-gde/prereq/… . Vous devez avoir deux utilisateurs; un utilisateur local et l'utilisateur du serveur Web
Steve Johnson
l'idée de définir les autorisations au niveau de l'application est erronée, donc je pense que les gens devraient éviter la documentation de cette section. il sera mis à jour dans les prochaines versions en fonction de leurs problèmes de github
Claudiu Creanga
1

Ceci est ma résolution temporaire. Je commente les lignes 744 et 466 dans <magento_dir>/setup/src/Magento/Setup/Model/Installer.php.

Il s'agit du code de ligne:

$this->checkInstallationFilePermissions();

J'ai besoin d'une solution, ne changez pas le fichier principal.

Thao Pham
la source
Le problème est probablement dû à un lien symbolique cassé (répondu ci-dessous) sous le répertoire pub / static. La suppression du lien symbolique rompu devrait résoudre le problème sans modifier les fichiers principaux.
mttjohnson
newtips.co/magento/questions/91184/… Cela fonctionnera
Envision Ecommerce
@EnvisionEcommerce le lien ne fonctionne pas.
MagePsycho
1

Correction de l'autorisation bin / magento refusée

chmod u + x bin / magento

Gentzy
la source
0

J'ai eu le même problème où je ne pouvais pas installer Magento via la ligne de commande. La simple création du dossier a pub/staticrésolu le problème.

Quinten
la source
0

Si quelqu'un rencontre ce problème sur le système d'exploitation Windows. Exécutez simplement la commande sur une invite de commande Administrateur et cela fonctionnera comme un charme. J'espère que cela aide quelqu'un.

Lakshin Karunaratne
la source
0

Dans mon cas, l'exécution de la commande de mise à niveau via un utilisateur non root ou un utilisateur avec des autorisations limitées était à l'origine de l'erreur. Assurez-vous d'exécuter la commande de mise à niveau avec un utilisateur disposant des autorisations suffisantes.

Arvind07
la source
0

J'ai vérifié plusieurs fois les autorisations d'écriture et tout allait bien.

  1. J'ai commenté cette ligne, ce qui me lève une exception.
  2. Ensuite, j'ai exécuté setup: upgrade.
  3. Revenu en arrière avec exception
  4. Le problème ne s'est plus reproduit
zhartaunik
la source
0

Exécutez la commande suivante pour les trois adresses IP suivantes:

<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
la source
0

ne l'utilisez pas:

rm -r pub/static

il supprimera tous les fichiers même .htaccess

vous pouvez utiliser ce sera mieux:

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

après cette utilisation:

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

il suffit de supprimer le dossier pub / statique de votre magento2

rm -r pub/static

puis déployez le contenu statique de magento2

php bin/magento setup:static-content:deploy

en utilisant ce processus, mon même problème a été résolu.

Abhishek
la source
4
Vous ne devez pas supprimer l'intégralité du répertoire pub / static car il contient un fichier .htaccess qui est important, et le fichier .htaccess ne sera pas recréé sur aucun contenu statique déployé. Vous pouvez exécuter rm -r pub/static/*et cela devrait éviter de supprimer le fichier .htaccess.
mttjohnson