WordPress bietet seit Versionen 2.7 die Funktionalität des automatischen Updates. Mit dieser Funktion werden aus dem CMS heraus die aktualisierten Komponenten in den Webspace geladen, entpackt und an die richtige Stelle kopiert.
Als ich in Vorbereitung der Erneuerung meines Blogs eine entsprechenden Installation auf meinem lokalen Testsystem aufgesetzt habe, wurde ich mit der Abfrage der Daten für den ftp-Zugang auf den Server konfrontiert. Weil auf dem Zielsystem kein ftp läuft, sondern die Verbindung via ssh realisiert ist, schien damit das Auto-Update für mich nicht nutzbar. Entsprechende galt für die Funktion zum Installieren von Plugins
Umso überraschter war ich, als auf dem Zielsystem eine testweise ausgelöste Installation eines Plugins sauber durchlief, ohne dass die Daten für den ftp-Zugang abgefragt wurden. Da ich zu dem Zeitpunkt noch andere Probleme lösen musste, habe ich nicht versucht, der Angelegenheit auf den Grund zu gehen.
Einem Tweet von Max Winde entnahm ich gestern, dass er ähnliche Probleme hat(te).
Nach einigen erfolglosen Rumlaborieren stieß ich im WordPress Codex auf die einfache, wie logische Lösung: Der Webserver muss in die (entsprechenden Teile der) Verzeichnisstruktur von WordPress schreiben können.
Nach dem initialen Upload des von WordPress gehören die Dateien dem User, mit dem man auf das Dateisystem zugreift und Schreibrechte bestehen nur für diesen User.
Nun kommt es auf die Konfiguration des httpd an. Bei meiner lokalen Installation (wie vermutlich auch bei Max Winde) läuft diesen Prozess unter einem speziellen User (bei mir www-data, überprüfbar mir ps auxw | grep -E 'http|apache|www'
). Dieser User hat per default keine Schreibrechte in meinem Verzeichnisbaum.
Bei meinem Provider läuft der jeweilige Prozess scheinbar unter meinem User, sodass der Prozess auch Dateien schreiben kann.
Als Workaround habe ich in meinem lokalen System www-data als Owner der Dateien eingetragen und mein Schreibrecht über die Group geregelt (vielleicht wäre es auch andersrum gegangen). Nun läuft auch hier das automatische Update durch.
Als endgültige Lösung möchte ich meinen Apache so konfigurieren, dass entsprechend der Konfiguration auf dem Zielsystem der Prozess unter meinem User läuft und für das automatische Update der Stunt mit den verbogenen User nicht mehr nötig ist. Habe aber noch keinen Schimmer, wie ich das hinbekomme.