Fehlende Schreibrechte im Verzeichnis pub / static beim Ausführen von bin / magento setup: upgrade


19

Am Tag zuvor habe ich ein neues Modul aktualisiert und es funktionierte normal. Wenn ich jetzt renne bin/magento setup:upgrade, erhalte ich die folgende Ausnahme. Ich habe versucht, die Berechtigungen für den pubOrdner in Magento 2 auf 777 (oder 770) zu setzen, aber es funktioniert nicht.

  [Ausnahme]
  Fehlende Schreibberechtigungen für die folgenden Verzeichnisse: 'pub / static'


Hast du es geschafft, dieses Problem zu lösen? wenn ja, bitte poste die Lösung.
Reena Parekh

Haben Sie das gleiche Problem?
Thao Pham

Ja, ich stehe vor dem gleichen Problem. Wie hast du es gelöst?
Reena Parekh

Ich kommentiere einen Zeilencode im Kern. Willst du als ich tun?
Thao Pham

1
Ich habe mein relsove unten in der Post gepostet. Ich kann es versuchen
Thao Pham

Antworten:


30

TL; DR pub/staticOrdner kürzen.


Für mich hatte ich eine ältere Installation, die wahrscheinlich einige Symlinks und alte Dateien hatte, die nicht mehr existieren.

Das Problem checkInstallationFilePermissionsist, dass die Berechtigungen rekursiv überprüft werden. Daten und Ordner. Ich hatte einen fehlenden Symlink und dieser gab bei der Überprüfung, ob er beschreibbar ist, den Wert false zurück.

Wie man debuggt:

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

  2. Springe zu Zeile 143 in der Methode checkRecursiveDirectories

  3. Fügen Sie die Zeilen hinzu var_dump($subDirectory);var_dump($subDirectory->isWritable());

  4. Wieder laufen bin/magento setup:upgrade

Jetzt werden Sie sehen, was wirklich falsch ist, und Sie können es beheben. Persönlich entferne ich alles inpub/static , dies werden automatisch generierte Inhalte, so dass Sie sich darüber keine Sorgen machen sollten.


1
Ich habe pub / static vollständig entfernt, nachdem ich setup ausgeführt habe: upgrade Der einzige Ordner in pub / static ist der Ordner __requirejs. CSS fehlen, kein Styling, was auch immer .... Mann .. Ich wünschte, ich hätte das nicht getan
Lachezar Raychev

Wie kann ich alles in pub / static wiederherstellen?
Lachezar Raychev

2
alles lief so gut .... :) ich
fange

3
Wenn Sie den Inhalt von pub / static entfernen, stellen Sie sicher, dass Sie pub / static / .htaccess nicht entfernen, da es Teil der Codebasis ist und nicht neu erstellt wird: github.com/magento/magento2/tree/2.0/ pub / static
mttjohnson

Perfecto! Dies war es ..
Arvind07

11

Ich bin auf diesen Fehler in der Entwicklung gestoßen, weil eine symbolische Verbindung unterbrochen wurde.

Ich hatte eine Datei im view/frontend/webVerzeichnis eines Moduls erstellt, die im developerModus pub/staticmithilfe eines symbolischen Links auf das Verzeichnis des Moduls verteilt wurde, in dem die ursprüngliche Datei gespeichert ist.

Irgendwann in der Entwicklung habe ich die Datei aus meinem Modul entfernt, aber der symbolische Link bestand immer noch darin pub/static, auf eine Datei zu verweisen, die nicht mehr vorhanden war. Ich gehe davon aus, dass dies auch der Fall wäre, wenn ich eine der Dateien umbenannt hätte.

Wenn sich eine Site im productionModus befindet und bin/magento setup:static-content:deployausgeführt wurde, werden die Dateien tatsächlich in das pub/staticVerzeichnis kopiert, anstatt symbolische Links zu erstellen.

Um diese unterbrochene symbolische Verbindung zu finden, habe ich einen Befehl aus der Shell ausgeführt

find -L . -type l

Das Entfernen des defekten symbolischen Links löste das Problem (zum Beispiel mit find -L . -type l -exec rm {} \;).


Dies war auch die Antwort auf mein Problem, danke mttjohnson!
Joshua Soileau

4

Führen Sie in Ihrem Magento-Stammverzeichnis die folgenden Befehle aus, und Ihr Problem sollte behoben sein:

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

Hat für mich gearbeitet.


Dadurch wird auch die .htaccessDatei gelöscht . Sie benötigen eine .htaccessDatei.
Adarsh ​​Khatri

2

Richten Sie die Berechtigungen wie in der offiziellen Dokumentation beschrieben ein: http://devdocs.magento.com/guides/v2.0/install-gde/install/file-system-perms.html


1
Können Sie die tatsächlichen Berechtigungen nur für den Fall, dass sich die URL ändert.
rob3000

Ich versuche es erneut, aber es funktioniert nicht
Thao Pham

Vergiss nicht, es rekursiv in Unterverzeichnisse zu
schreiben

Eigentum ist genauso wichtig wie Berechtigungen; Überprüfen Sie den obigen Link und auch devdocs.magento.com/guides/v2.0/install-gde/prereq/… . Sie müssen zwei Benutzer haben. ein lokaler Benutzer und der Webserver-Benutzer
Steve Johnson

Die gesamte Idee, die Berechtigungen auf Anwendungsebene festzulegen, ist falsch. Ich denke, die Leute sollten die Dokumentation in diesem Abschnitt meiden. Es wird in den nächsten Versionen entsprechend den Github-Problemen aktualisiert
Claudiu Creanga,

1

Dies ist meine vorübergehende Lösung. Ich kommentiere die Zeilen 744 und 466 in <magento_dir>/setup/src/Magento/Setup/Model/Installer.php.

Dies ist der Zeilencode:

$this->checkInstallationFilePermissions();

Ich brauche eine Lösung, ändere nicht die Kerndatei.


Das Problem liegt wahrscheinlich an einem fehlerhaften Symlink (unten beantwortet) im Verzeichnis pub / static. Das Entfernen des fehlerhaften Symlinks sollte das Problem beheben, ohne die Kerndateien zu ändern.
mttjohnson


@EnvisionEcommerce Der Link funktioniert nicht.
MagePsycho

1

Fix bin / magento-Berechtigung verweigert

chmod u + x bin / magento



0

Ich hatte das gleiche Problem, bei dem ich Magento nicht über die Kommandozeile installieren konnte. pub/staticDas Problem wurde durch einfaches Erstellen des Ordners behoben.


0

Wenn jemand dieses Problem unter Windows OS hat. Führen Sie den Befehl einfach an einer Administrator-Eingabeaufforderung aus und er funktioniert wie ein Zauber. Hoffe das hilft jemandem.


0

In meinem Fall verursachte das Ausführen des Upgrade-Befehls durch einen Benutzer ohne Rootberechtigung oder einen Benutzer mit eingeschränkten Berechtigungen den Fehler. Stellen Sie sicher, dass Sie den Upgrade-Befehl mit einem Benutzer ausführen, der über ausreichende Berechtigungen verfügt.


0

Ich habe viele Male die Schreibrechte überprüft und alles war gut.

  1. Ich habe diese Zeile kommentiert, was für mich eine Ausnahme darstellt.
  2. Dann habe ich setup: upgrade ausgeführt.
  3. Die Zeile wurde mit Ausnahme zurückgesetzt
  4. Ausgabe nicht mehr reproduziert

0

Führen Sie den folgenden Befehl für die folgenden drei IP-Adressen aus:

<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

benutze das nicht:

rm -r pub/static

Es werden alle Dateien entfernt, auch .htaccess

Sie können dies besser sein:

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

danach verwenden:

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

-1

entferne einfach den pub / static ordner von deinem magento2

rm -r pub/static

dann statischen inhalt von magento2 bereitstellen

php bin/magento setup:static-content:deploy

Mit diesem Verfahren konnte ich das gleiche Problem lösen.


4
Sie sollten nicht das gesamte pub / static-Verzeichnis entfernen, da es eine wichtige .htaccess-Datei enthält, und die .htaccess-Datei wird bei der Bereitstellung von statischem Inhalt nicht neu erstellt. Sie könnten ausführen rm -r pub/static/*und das sollte das Entfernen der .htaccess-Datei vermeiden.
mttjohnson
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.