Wordpress und Plugins automatisch aktualisieren ohne den FTP-Dialog

Ich dachte lange Zeit das Verhalten von Wordpress, nach einem Klick auf "automatisch aktualisieren" (Siehe Bild 1 - "automatisch aktualisieren ohne korrekte Rechte") einen Dialog einzublenden, in dem man FTP-Zugangsdaten eingeben muss um das zuvor am PC heruntergeladene ZIP-Archiv mit der neuen Pluginversion auf seinen Server hochzuladen (Siehe Bild 2 - "FTP-Abfragemaske"), seie der Standard und die einzige Methode, die diese Funktion anbietet, um ein Plugin auf eine neue Version zu aktualisieren. War für mich natürlich extrem blöd, da ich gar keinen FTP Dienst hier auf meinem Server benötige. Was ich hoch- und herunterladen möchte, transferiere ich per SCP. Ein Einfallstor weniger, deutlich sicherer da von Haus aus verschlüsselt und solche Features wie Up-/Downloadquota benötige ich ohnehin nicht.

[caption id="attachment_782" align="aligncenter" width="289" caption="automatisch aktualisieren ohne korrekte Rechte"]automatisch
aktualisieren ohne korrekte
Rechte{.size-medium .wp-image-782 width="289" height="300"}[/caption]

[caption id="attachment_783" align="aligncenter" width="289" caption="FTP-Abfragemaske"]FTP-Abfragemaske{.size-medium .wp-image-783 width="289" height="300"}[/caption]

Das dieses die einzige Methode ist ist jedoch garnicht der Fall! Ja, nicht einmal um die Standardvariante handelt es sich; das ganze ist schon eine Fallback-Funktion. Hat man sein WordPress richtig konfiguriert, wird man garnicht nach FTP Zugangsdaten gefragt, sondern Wordpress läd die Datei selbstständig von der Wordpress-Seite des Plugins herunter, deaktiviert es, überschreibt die alte Version mit der neuen und aktiviert diese anschließend wieder. Es hält sich somit an seine eigenen Empfehlungen und könnte komfortabler nicht sein.

Warum klappt es jedoch bei so vielen nicht und wieso können einem auf Nachfrage die meisten Experten nichtmal sagen warum beim einen das Autoupdate und beim anderen die FTP-Datenabfrage kommt? Die Antwort auf die zweite Frage habe ich selber nicht parat, aber die Antwort auf die erste versuche ich im folgendem zu geben und versuche das ganze so leicht verständlich wie möglich zu halten.

Der Webserver ist an sich auch nur ein Programm, welches als ein bestimmter User läuft. Der Webserver darf also auch immer nur auf genau die Ressourcen zugreifen (und mit den entsprechenden Rechten), wie es ein User auf der Shell, der als dieser User angemeldet ist, auch dürfte. Als welcher User/Gruppe der Webserver laufen soll, legt man beispielsweise beim Apache mit den Optionen "User" und "Group" fest. Im folgenden gehe ich exemplarisch davon aus, das es sich hierbei bei beidem um "apache2" handelt.
Dementsprechend muss ein Verzeichnis in dem der Webserver Dateien ablegen, verändern oder entfernen soll, auch mit den entsprechenden Rechten für diesen User versehen werden. Für Wordpress' Plugins wäre dieses das Verzeichnis "wp-content/plugins/". Selbstverständlich muss der User apache2 in diesem, sowie dessen Unterverzeichnisse für Dateien mindestens 644 und für Verzeichnisse mindestens 755 Rechte haben. Selbiges gilt jedoch natürlich für alle anderen Verzeichnisse, in denen der Webserver Daten ändern können muss, wie "wp-content/themes" oder "wp-content/uploads" gleichermaßen.
Jedoch war dieses immer schon so bei mir, und dennoch habe ich den zuvor genannten FTP-Datenabfrage - Dialog erhalten.

Der Knackpunkt ist, das die Datei "wp-admin/update.php" dem User gehören muss, als der der Webserver läuft. Es genügt nicht das dieser User einfach sämtliche benötigten Rechte auf diese Datei haben muss, sie muss ihm tatsächlich gehören! Einen durch Berechtigungen gerechtfertigten Grund hierfür gibt es nicht, die Routine ist schlichtweg so programmiert. Selbstverständlich könnte man dieses Stück Code verändern, nur muss man das dann nach jedem Core - Update wiederholen. Grundsätzlich lässt man von sowas die Finger!

Ist also beides gegeben, passende lese-/schreibrechte in den genannten Verzeichnissen, sowie das Eigentumsrecht auf die Datei "wp-admin/update.php", funktioniert es auch mit dem auto-Update!

[caption id="attachment_784" align="aligncenter" width="289" caption="Funktionierendes Wordpress Plugin-Auto-Update"]Funktionierendes Wordpress
Plugin-Auto-Update{.size-medium .wp-image-784 width="289" height="300"}[/caption]

Vielen Dank an dieser Stelle an Stefan David, der auf seinem Blog-Beitrag nach Monaten als einziger in der Lage war, dieses Phänomen mal aufzudröseln! :)

Teilen per: TwitterEmail