Ich versuche, CakePHP 2 App innerhalb eines Containers zu laufen. Ich habe alles eingerichtet und PHP funktioniert ordnungsgemäß, aber habe ein Problem:/var/www/app/tmp hat falsche Schreibberechtigungen. Dieses Verzeichnis wird vom Datenträger geladenChange chmod von dir aus dem Volume
Antwort
Haben Sie sich bereits die CakePHP2.0-Dokumentation angesehen? Vielleicht ist das nützlich:
Ein häufiges Problem ist, dass die app/tmp-Verzeichnisse und Unterverzeichnisse sowohl vom Webserver als auch vom Benutzer der Befehlszeile beschreibbar sein müssen. Auf einem UNIX-System, wenn Ihr Web-Server-Benutzer von der Befehlszeile Benutzer unterschiedlich ist, können Sie die folgenden Befehle nur einmal in Ihrem Projekt ausführen, um sicherzustellen, dass die Berechtigungen korrekt eingerichtet sein:
HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`
setfacl -R -m u:${HTTPDUSER}:rwx app/tmp
setfacl -R -d -m u:${HTTPDUSER}:rwx app/tmp
Quelle: https://book.cakephp.org/2.0/en/installation.html#permissions
Dies passiert sehr oft, wenn Sie PHP über einen Container Passthrough ausführen. In diesem Szenario übergeben Sie ein Verzeichnis mit vordefinierten Berechtigungen an die Anwendung. Sie müssen regelmäßig sicherstellen, dass die Berechtigungen vom Container auf den Webserver aktualisiert werden. Lassen Sie uns sagen, dass Ihre Container Bahn genannt wird
Docker exec web chown -R www-data/var/www/html
(/ var/www/html mit ersetzt werden, wo immer sich Ihr Code)
Für Beispiel. Dadurch wird es im Container einwandfrei funktionieren, kann jedoch bei Verwendung von Linux Probleme beim Zugriff auf die Daten vom Host-Betriebssystem verursachen. Ich hatte dieses Problem mehrmals mit Laravel und PHP mit einem Volume Passthrough vom Host, da die Dateien des Volumes selbst auf eine Benutzer-ID aktualisiert werden, die das Host-Betriebssystem nicht hat.
- 1. AudioServicesPlaySystemSound Volume auf dem iPad
- 2. AVAudioSession App Volume Unabhängig von System Volume
- 3. Docker-komponieren Volume-Mount vor dem Lauf
- 4. Docker freigegebenes Volume erstellen
- 5. Volume-Wert von Pulseaudio
- 6. NPM Link zu Src Dir anstelle von Lib Dir
- 7. Unity - Change Text UI Alpha-Farbe aus dem Skript?
- 8. Rekursive mkdir() und chmod()?
- 9. Cross-Plattform-Speicherplatz auf dem Volume mit Python
- 10. Ressourcen von 'node_modules' dir
- 11. Kopieren oder Klonen von persistentem Volume mit dem OpenShift-Ursprung
- 12. winutils.exe chmod Befehl nicht gesetzt Erlaubnis
- 13. -I dir vs -isystem dir
- 14. Modus Parameter in Chmod?
- 15. Hol dir alle Klassen aus einem Paket
- 16. Chmod, php und imageupload
- 17. React change route von Change-Komponente
- 18. Entity Framework Change Tracking nach dem Aufruf von ToList()
- 19. Hol dir org.w3c.dom.Document von XMLResourceParser
- 20. Script bash chmod in einem cicle
- 21. Wie importierst du dir aus './Verzeichnis'?
- 22. Change Path von OpenFileDialog
- 23. Basic CHMOD Einschränkung
- 24. chmod für Lauf-Datei
- 25. Welche Art von Python Magie führt dir() mit __getattr__ aus?
- 26. npm ERR! Fehler: EPERM, chmod
- 27. So mounten Sie ein Host-Volume von Dockerfile
- 28. docker run -v <dir> vs Dockerfile VOLUMEN <dir>
- 29. sonatyp nexus docker volume fehler
- 30. Unterschied zwischen der Verwendung von "chmod a + x" und "chmod 755"
In Container-Sinne gibt es keinen Befehlszeilenbenutzer. Nur der Stamm existiert in Containern. Dies hat mit dem eigentlichen Überlagerungsprozess zu tun. – Dockstar