Ich habe die Berechtigungen wie folgt gesetzt:
# Setze alle Dateien und Verzeichnisse des Benutzers und der Gruppe auf wp-user
chown wp-user:wp-user -R *
# Setze den Benutzer und die Gruppe des Upload-Ordners auf www-data
chown www-data:www-data -R wp-content/uploads/
# Setze alle Verzeichnisberechtigungen auf 755
find . -type d -exec chmod 755 {} \;
# Setze alle Dateiberechtigungen auf 644
find . -type f -exec chmod 644 {} \;
In meinem Fall habe ich einen spezifischen Benutzer für WordPress erstellt, der sich vom Standardbenutzer des Apache unterscheidet, um den Zugriff aus dem Web auf jene Dateien zu verhindern, die diesem Benutzer gehören.
Dann wird dem Apache-Benutzer die Berechtigung gegeben, den Upload-Ordner zu bearbeiten, und schließlich werden ausreichend sichere Datei- und Ordnerberechtigungen festgelegt.
BEARBEITET
Wenn Sie W3C Total Cache verwenden, sollten Sie auch Folgendes tun:
rm -rf wp-content/cache/config
rm -rf wp-content/cache/object
rm -rf wp-content/cache/db
rm -rf wp-content/cache/minify
rm -rf wp-content/cache/page_enhanced
Dann wird es funktionieren!
BEARBEITET
Nach einer Weile der Entwicklung von WordPress-Websites würde ich unterschiedliche Dateiberechtigungen pro Umgebung empfehlen:
In der Produktion würde ich Benutzern keinen Zugriff geben, um das Dateisystem zu ändern. Ich würde ihnen nur erlauben, Ressourcen hochzuladen und bestimmten Plugin-Ordnern Zugriff zu geben, um Backups usw. durchzuführen. Aber bei der Verwaltung von Projekten unter Git und der Verwendung von Bereitstellungsschlüsseln auf dem Server ist es nicht gut, Plugins auf der Staging- oder Produktionsumgebung zu aktualisieren. Hier ist das Dateieinrichtungs-Setup für die Produktion:
# Setze den Benutzer und die Gruppe des Upload-Ordners auf www-data
chown www-data:www-data -R wp-content/uploads/
www-data:www-data = Apache- oder Nginx-Benutzer und -Gruppe
Die Staging-Umgebung wird die gleichen Berechtigungen wie die Produktion haben, da es ein Klon davon sein sollte.
Schließlich wird die Entwicklungsumgebung Zugriff haben, um Plugins, Übersetzungen, alles zu aktualisieren...
# Setze den Benutzer und die Gruppe des Upload-Ordners auf www-data
chown www-data:www-data -R wp-content/
# Setze den Benutzer und die Gruppe des Upload-Ordners auf www-data
chown dein-benutzer:wurzel-gruppe -R wp-content/themes
# Setze den Benutzer und die Gruppe des Upload-Ordners auf www-data
chown dein-benutzer:wurzel-gruppe -R wp-content/plugins/dein-plugin
www-data:www-data = Apache- oder Nginx-Benutzer und -Gruppe dein-benutzer:wurzel-gruppe = dein aktueller Benutzer und die Wurzelgruppe
Diese Berechtigungen erlauben es Ihnen, unter themes
und dein-plugin
Ordner ohne Erlaubnis zu entwickeln. Der Rest des Inhalts wird vom Apache- oder Nginx-Benutzer besessen, um WP die Verwaltung des Dateisystems zu ermöglichen.
Bevor Sie ein Git-Repository erstellen, führen Sie zunächst diese Befehle aus:
# Setze alle Verzeichnisberechtigungen auf 755
find . -type d -exec chmod 755 {} \;
# Setze alle Dateiberechtigungen auf 644
find . -type f -exec chmod 644 {} \;