Sonntag , 24 Juli 2016

WordPress auf Microsoft Azure – Plugin Aktualisierung fehlgeschlagen

WordPressSeit einigen Wochen schlug die Aktualisierung von WordPress-Plugins bzw. Themes in meinem – in Microsoft Azure gehosteten – Blog fehl. Die Suche im Internet führte leider auch zu keiner Lösung, da meistens nur auf die Rechte im Dateisystem verwiesen wurde.
Doch heute bin ich durch einen Zufall auf die Lösung gestoßen…

Ende letzten Jahres hatte ich meinen Blog von der BlogEngine.NET auf WordPress, und von den Azure Cloud Services auf die Azure Web Apps (aka Azure Web Sites), umgezogen.

Alles lief wunderbar, und ich war mit dem Ergebnis vollkommen zufrieden.

Das Problem

Vor wenigen Wochen konnte ich urplötzlich weder WordPress-Plugins noch Themes aktualisieren.
Die WordPress Engine aktualisierte sich allerdings weiterhin ohne Probleme.

Genauer gesagt, konnten beim Aktualisieren der Plugins, die Alte Version nicht mehr entfernt werden.

Downloading update from http://downloads.wordpress.org/plugin/<plugin>.zip
Unpacking the update
Deactivating the plugin
Removing the old version of the plugin
Could not remove the old plugin
Plugin upgrade Failed

Nachdem die Aktualisierung fehlgeschlagen war, waren auch die Plugins verschwunden.

Leider ging anschließend auch die Neuinstallation der betroffenen Plugins nicht mehr.
Hier bekam ich die Fehlermeldung, dass für das Plugin relevante Verzeichnisse nicht mehr angelegt werden konnten.

Die einzige "Lösung" war ein Neustart der Web App.
Danach ging auch die Re-Installation wieder.

Bei meiner Suche im Internet stieß ich immer wieder auf Rechteprobleme im Dateisystem.

Dies führte allerdings zu keiner Lösung, da der Blog zum Einen auf Windows (und nicht Linux) gehostet wird und zum Anderen ausreichende Rechte vorhanden waren.

Endlich die Lösung

Heute bin ich endlich auf die Lösung gestoßen…
Danke an Cory Fowler für den Tipp!

Vor kurzem wurden Änderungen an der WinCache Extension for PHP durchgeführt, welche Anfragen ans Dateisystem, wie beispielsweise is_dir, is_file und file_exists, an WinCache umleiten.
Somit kann es passieren, dass bereits gelöschte Dateien »kurzfristig« als Vorhanden an PHP Skripte zurückgemeldet werden.

Diese Umleitungen können ganz einfach deaktiviert werden:

  1. Falls noch nicht vorhanden, muss eine Datei mit dem Namen .user.ini Im Stammverzeichnis des Blogs angelegt werden.
    Das wäre bei den Azure Web Apps: d:\home\site\wwwroot
  2. Dort muss die Zeile wincache.reroute_enabled=0 hinzugefügt werden.
  3. Sicherheitshalber hatte ich anschließend die Web App neu gestartet

Nachdem ich die Umleitungen deaktiviert hatte, lief auch das Aktualisieren der Plugins wieder.

8 Kommentare

  1. Martin Bucher

    Hallo Sascha,

    zuallererst einmal danke für diese Information.
    Ich selbst arbeite zwar nicht mit Azure (aktuell… mal sehen), finde aber dennoch schon alle Beiträge aus dieser Richtung interessant (besonders, da ich möglicherweise mal damit arbeiten möchte).
    Was mich hier stutzig macht: Wieso wurde diese Änderung überhaupt vorgenommen?
    Wenn ich Dateien und Ordner auf Existens etc. prüfe, will ich ja wirklich den aktuellen Status und keinen gecached Wert.
    Klar, aus der Sicht der Performance lässt sich das schon verstehen, aber da kann man sicher auch an besseren Enden „sparen“ als gerade an Stellen, wo man (möglichst zuverlässig) mit dem Dateisystem arbeiten möchte.
    Generell kann ich mir kaum ein Szenario vorstellen, wo ich mit dem Dateisystem arbeiten möchte, aber nicht zwingend den aktuellen (korrekten) Status von Dateien/Ordnern benötige.
    Möglicherweise kannst du ein wenig Licht in das Dunkel bringen?

    Grüße,
    Martin

    • Hallo Martin,

      Wenn ich Cory richtig verstanden habe, hat das nichts mit Azure direkt zu tun, sondern trifft auch auf andere PHP Installationen auf den IIS zu, wo diese Erweiterung installiert ist.

      Ob diese IIS Erweiterung schon früher bei den Azure Web Apps installiert war, weiß ich leider nicht.
      Für mich sieht das auf jeden Fall wie ein Bug in der Erweiterung aus.

      Viele Grüße,
      Sascha

  2. Hallo Sascha,

    mich würden kurz Deine Erfahrungen mit Azure Websites und WordPress insbesondere hinsichtlich der ClearDB-Performance interessieren.

    Oder hast Du für MySQL was anderes am Start?

    Ich selbst habe keine gute Erfahrungen mit ClearDB gemacht – langsam und teuer – und bin auf der Suche nach einer Alternative bzw. Erfahrungswerten.

    Gruß,

    Thorsten

    • Hallo Thorsten,

      momentan nutze ich noch eine ClearDB für 9,99 im Monat.
      Allerdings hab ich hier und da auch Performance Probleme feststellen können, weshalb ich derzeit einen Redis-Cache dazwischengeschaltet habe.

      Langfristig ist dies auch keine wirkliche Lösung, weshalb ich derzeit mit einer eigene MySQL VM liebäugle.
      Diese kann ich dann individuell skalieren, sowie mehrere Datenbanken ohne Größenbeschränkung hosten lassen.

      Viele Grüße,
      Sascha

  3. Hallo Sascha,
    Danke für den Tipp.
    Das Problem hatte ich die letzten Jahre schon 😉 Nun bin ich vom „klassischen Hosting“ bis hin zu Azure schon gelaufen Immer das gleiche Problem. Letzten Winter musste ich dann leider auf einen Pinguin umsteigen… nun kann ich ja wieder zurück zu Azure 🙂
    Danke und Gruss

  4. Ich hatte das gleiche Problem, brauchte aber noch einen Schritt mehr.. Bei meiner Site waren alle Dateien im Plugin Ordner mit Schreibschutz versehen, daher konnten diese weder durch das WP Update noch manuell per FTP überschrieben werden. Geholfen hat nur das entfernen des Schreibschutzes über die Kudu console.

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.Benötigte Felder sind markiert *

*