Multivariate Virtual Machine für WordPress Plugin Debugging

Als Plugin Autor kennt man wahrscheinlich folgenden Fall nur allzu gut: Man hat gerade sein Plugin (oder eine neue Version) veröffentlicht, da melden sich die ersten User, dass es bei Ihnen nicht funktionieren würde. Ein beliebter Ansatzpunkt von Pluginentwicklern ist "Alle Plugins deaktivieren" und schauen ob das Problem weiter besteht. Natürlich gibt es Fälle in denen dieses Vorgehen notwendig ist, ich sehe es aber eher als "Last Resort" an. Wer kann es sich schon erlauben im laufenden Betrieb einer Website alle Plugins zu deaktivieren? Als Anwender verzichte ich dann lieber auf das eine Plugin was offensichtlich Probleme macht.

Kürzlich wurde ich auf ein Problem in meinem Plugin ResizeFly aufmerksam gemacht, welches ich einfach nicht reproduzieren konnte. Als ich den User (vielen Dank Jeroen) nach seiner Konfiguration fragte waren die Antworten:

WP 4.4.3, running Apache/2.4.16 (Unix)

und

Clean WP 4.5.2 install using the TwentySixteen theme, and ResizeFly 1.1.5.
I can confirm the plugin is working and actually showing new thumbs in the Image Library.

I also tested Resizefly on another existing project using WP 4.2.8, and on that project new thumbs in the Image Library are NOT showing (same problem, 404)

Also stellte sich mir die Frage wie ich das jetzt debuggen soll. Natürlich könnte ich mir eine Vagrant VM bauen die der Userkonfiguration nahe kommt, das ist aber natürlich nichts was man dauerhaft machen kann, da dies doch etwas Zeit in Anspruch nimmt. Also habe ich mir eine "Multivariate WordPress Plugin Debugging Virtual Machine" gebaut. Natürlich kann man hier auch nicht jede Serverkonfiguration nachbilden, aber es erlaubt mir sehr schnell per phpbrew die PHP Version, per Composer die WordPress (und Plugin) Versionen zu wechseln und wahlweise Nginx oder Apache als Webserver laufen zu lassen und zumindest festzustellen ob das Plugin ein Problem mit einer gewissen Version von X hat.

Natürlich kann man auch einfach in WordPress 3.5 und PHP 5.2.17 sein Plugin aktivieren und sehen was passiert. Für Rückfragen oder Anmerkungen: Ich bin @alpipego auf so gut wie allen – mir bekannten – Plattformen.