Laravel Tools für WordPress: Lokale Entwicklungsumgebung mit Valet

Laravel ist ein PHP-Framework um komplexe Anwendungen zu erstellen und WordPress ein Content Management System um Inhalte zu verwalten und anzuzeigen. Zwar kann man in Laravel auch einen Blog wie bei WordPress umsetzen aber i.d.R. nutzt man Laravel eher für komplexere Anwendungen.

Um Laravel ist aber ein ganzes Ökosystem an nützlichen Tool entstanden, die man auch mit WordPress sehr gut nutzen kann. Meistens handelt es sich dabei um Tools für die Entwicklung z.B. von Plugin & Themes aber auch in anderen Bereichen lassen sie sich nutzen.

In dieser Serie möchte ich euch einige der Tools vorstellen. Den Anfang macht Laravel Valet:

Update

Ursprünglich habe ich den Artikel im April 2020 geschrieben und ich freue mich immer weider, wenn mein Artikel z.B. im WP Sofa Podcast erwähnt wird.

Seitdem hat sich an dem eigentlichen Tool nicht viel geändert, aber es gibt mit PHP Monitor einen netten Helfer für die Statusbar und DBngin kann euch helfen verschiedene Datenbanksysteme/-versionen zu verwalten.

Außerdem habe ich einmal genauer erklärt, da ich selber wieder drüber gestolpert bin, wie man Composer in der PATH-Variable ergänzt und, dass es auch Ports für Windows und Linux gibt.

Was ist Valet?

Valet ist eine Entwicklungsumgebung für MacOS, die sehr schlank gehalten ist und sich über die Kommandozeile bedienen lässt. Von der Nutzung in der Kommandozeile sollte man sich nicht abschrecken lassen, ich bevorzuge auch eher ein GUI, aber nach der Installation müsst ihr euch eigentlich nur noch ein Befehl merken.

Info

Leider steht Laravel Valet offiziell nur für MacOS zur Verfügung. Allerdings gibt es auch Ports für Windows (Valet Windows) und Linux (Valet Linux). Diese Anleitung geht aber nur auf die MacOS-Version ein.

Valet läuft bei euch permanent im Hintergrund. Der große Vorteil gegenüber anderen Entwicklungsumgebung ist meiner Meinung nach die Leichtigkeit, die es gerade erlaubt dauerhaft im Hintergrund zu laufen. Zwar nutzen PHP, MySQL, NGINX Systemressourcen aber wirklich nur minimal (außer ihr ladet GB an Daten in die Datenbank). Außerdem müsst ihr Valet so nie starten, sondern wenn ihr eine konfigurierte Domain mit der Endung .test aufruft, ist die Website direkt da.

Installation

Benötigte Zeit: 5 Minuten

Die Installation von Laravel Valet ist sicherlich nicht die Einfachste aber hat man es einmal geschafft, ist es wirklich simpel. Versprochen!

  1. PHP installieren

    Zuerst müsst ihr PHP und MySQL auf eurem Mac installieren. Das geht am einfachsten mit Homebrew. Gebt die folgenden Befehle der Reihe nach ein;
    PHP installieren: brew install php
    Der benötigte Webserver, in diesem Fall NGINX, wird im 5. Schritt direkt mit Laravel Valet installiert.

  2. Datenbank installieren

    Für WordPress brauchen wir eine MySQL-Dankenbank. Diese können wir entweder auch mit Homebrew installieren:
    MySQL Datenbank: brew install mysql
    MySQL starten: brew services start mysql@8.0
    Oder alternativ, vor allem wenn ihr für andere Projekte noch Postgres, Redis oder unterschiedliche Datenbankversionen benötigt, ladet euch das kostenlose Programm DBngin herunter. Dort könnt ihr ganz schnell eine MySQL-Datenbank starten und wenn benötigt auch Postgres oder Redis.

  3. Composer installieren

    Um Valet zu installieren, benötigt ihr außerdem noch den Abhängigkeitsmanager Composer.

  4. PATH-Variable ergänzen

    Wenn ihr das erste Mal Composer nutzt, müsst ihr noch den .composer/vendor/bin Ordner zu der $PATH-Variable hinzufügen. Ansonsten könnt ihr den Schritt überspringen.
    Seit MacOS 10.15 Catalina (ab 2019) nutzt MacOS, ZSH als Standard-Shell und nicht mehr GNU Bash. Deswegen müsst ihr in der versteckten Datei .zshrc (und nicht mehr .bashrc, wie in vielen Anleitungen im Internet noch beschrieben) in eurem Benutzerordner folgendes ergänzen export PATH="$HOME/.composer/vendor/bin:$PATH"
    Am einfachsten geht das mit dem Befehl:
    echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.zshrc
    Anschließend müsst ihr noch die Änderungen neu laden:
    source ~/.zshrc
    Anschließend sollte der Befehl composer about funktionieren.

  5. Laravel Valet über Composer laden

    Anschließend könnt ihr endlich Valet selber installieren mit composer global require laravel/valet.

  6. Valet installieren

    Jetzt solltet ihr in Terminal den Befehl valet install ausführen können und Valet installiert und konfiguriert für euch noch NGINX als Webserver. Wenn nicht, ist in Schritt 4 etwas schiefgelaufen.

Nutzung

Nach der doch etwas aufwendigen Installation ist die weitere Nutzung total simpel. Ladet euch WordPress herunter, entpackt es in einen Ordner eurer Wahl und führt in diesem Ordner den Befehl valet link meine-domain aus. Anschließend könnt ihr die Website im Browser unter der Domain http://meine-domain.test aufrufen.

Was dann noch fehlt, ist die Datenbank. Diese könnt ihr über die Kommandozeile steuern oder ihr ladet euch eine GUI herunter z.B. Sequel Pro. Der Benutzername lautet root. Ein Passwort ist lokal nicht gesetzt, d.h. ihr könnt einfach das Feld leer lassen. Für eine lokale Entwicklungsumgebung sollte das kein Problem sein.

Erstellt in der Datenbank eine neue Tabelle z.B. wordpress und passt die Zugangsdaten in der wp-config.php an:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', 'root' );

/** MySQL database password */
define( 'DB_PASSWORD', '' );Code-Sprache: PHP (php)

Anschließend könnt ihr die berühmte 5-Minuten Installation abschließend und könnt lokal mit WordPress anstellen was ihr wollt.

Valet erkennt übrigens automatisch WordPress und funktioniert neben Laravel auch mit weiteren CMS und PHP Frameworks wie Drupal, Craft, Joomla… Es ist sogar möglich seinen eigenen Treiber zu schreiben.

Bonus

Eigentlich benötigt ihr nur den Befehl valet link aber es gibt doch noch einige interessante Funktionen von Valet die einen anderen Befehl verlangen:

  • valet park und alle Unterverzeichnisse im aktuellen Verzeichnis z.B. ~/Sites sind über den Verzeichnisnamen für die .test-Domain zugänglich z.B. ~/Sites/wordpress-1 ~/Sites/wordpress-2wordpress-1.test und wordpress-2.test
  • valet secure meine-domain und eure Domain ist über https erreichbar.
  • valet share in dem WordPress-Ordner und ihr könnt die Seite über Ngrok öffentlich im Internet teilen
  • valet forget vergisst das aktuelle Verzeichnis wieder
  • valet paths zeigt alle geparketen Verzeichnisse an

NGINX Konfiguration anpassen

Wenn ihr eure lokale Seite mithilfe von valet share mit einem SSL-Zertifikat ausgestattet habt, könnt ihr unter ~/.config/valet/Nginx/ die NGINX-Konfiguration finden und anpassen.

Dort könnt ihr z.B. fehlende Bilder von eurer echten Seite laden, wenn ihr diese lokal gecloned habt.

PHP updaten oder Version wechseln

Eine neue PHP Version müsst ihr über Homebrew updaten: brew upgrade php und anschließend Valet darüber informieren mit valet use php

Außerdem könnt ihr mit Homebrew ältere PHP-Versionen brew install php@7.3 installieren. Anschließend könnt ihr Valet befehlen diese Version zu verwenden: valet use php@7.3

Zurück auf die aktuellste installierte Version geht es mit valet use php

Mit PHP Monitor, Valet von der Statusbar aus steuern

Mit der kleinen App PHP Monitor könnt ihr Valet von der Statusbar aus steuern und so schnell zwischen installierten PHP Versionen wechseln oder einzelne Dienste (PHP, NGINX…) neu starten.

Installieren & updaten könnt ihr die App auch über Homebrew:

brew tap nicoverbruggen/homebrew-cask
brew install --cask phpmon

Meistens möchte man lokal ja ein eigenes Plugin oder Theme entwickeln. Das will man aber meistens nicht direkt unter wp-content erledigen. Ihr könnt aber mit einem symbolischen Link Abhilfe schaffen:

Für Plugins:

cd ~/pfad/zu/wordpress/wp-content/plugins
ln -s ~/pfad/zu-eurem-plugin/mein-plugin mein-pluginCode-Sprache: JavaScript (javascript)

Für Themes:

cd ~/pfad/zu/wordpress/wp-content/themes
ln -s ~/pfad/zu-eurem-theme/mein-theme mein-themeCode-Sprache: JavaScript (javascript)

Wenn etwas kaputt geht

Leider geht stellenweise auch mal etwas kaputt, z.B. wenn man versucht eine neue PHP-Version zu installieren. Mir hilft da oft einfach noch einmal valet install auszuführen. Hat bisher 90% meiner Probleme gelöst.

Fazit

Ich bin echt ein großer Fan von Laravel Valet und finde es deutlich praktischer als eine Entwicklungsumgebung auf Docker- oder Virtualbox-Basis. Kein Starten, kein Abschalten, um Arbeitsspeicher zu sparen und eine einfache Bedingung sind große Vorteile. Die Installation ist sicherlich etwas aufwendig, aber kein Hexenwerk.

Laravel Tools für WordPress

Dieser Beitrag ist Teil meiner kleinen Serie Laravel Tools für WordPress, wo ich euch Tools vorstelle, die ich aus der Laravel-Welt kenne, aber auch problemlos für WordPress genutzt werden können.

9 Reaktionen zu “Laravel Tools für WordPress: Lokale Entwicklungsumgebung mit Valet

  1. Das Diagnostizieren von Fehler beim Programmieren von WordPress Plugins & Themes in PHP sieht bei mir meistens wie folgt aus:

    .wp-block-code {
    border: 0;
    padding: 0;
    }

    .wp-block-code > div {
    overflow: auto;
    }

    .shcb-language {
    border: 0;
    clip: rect(1px, 1px, 1px, 1px);
    -webkit-clip-path: inset(50%);
    clip-path: inset(50%);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
    word-wrap: normal;
    word-break: normal;
    }

    .hljs {
    box-sizing: border-box;
    }

    .hljs.shcb-code-table {
    display: table;
    width: 100%;
    }

    .hljs.shcb-code-table > .shcb-loc {
    color: inherit;
    display: table-row;
    width: 100%;
    }

    .hljs.shcb-code-table .shcb-loc > span {
    display: table-cell;
    }

    .wp-block-code code.hljs:not(.shcb-wrap-lines) {
    white-space: pre;
    }

    .wp-block-code code.hljs.shcb-wrap-lines {
    white-space: pre-wrap;
    }

    .hljs.shcb-line-numbers {
    border-spacing: 0;
    counter-reset: line;
    }

    .hljs.shcb-line-numbers > .shcb-loc {
    counter-increment: line;
    }

    .hljs.shcb-line-numbers .shcb-loc > span {
    padding-left: 0.75em;
    }

    .hljs.shcb-line-numbers .shcb-loc::before {
    border-right: 1px solid #ddd;
    content: counter(line);
    display: table-cell;
    padding: 0 0.75em;
    text-align: right;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    white-space: nowrap;
    width: 1%;
    }
    // ...
    echo '<code>';
    print_r($meine_variable_in_der_ich_einen_fehler_vermute);
    echo '</code>';
    exit;
    // oder
    echo '<pre>';
    var_dump($meine_variable_in_der_ich_einen_fehler_vermute);
    echo '</pre>';
    die;
    Code-Sprache: PHP (php)

    Nicht besonders elegant, aber so sieht meistens die Praxis in PHP aus. Selbst in der offiziellen PHP Dokumentation gibt es keine sinnvollen Vorschläge, wie man in PHP sauber Fehler diagnostizieren kann.

    Der richtige Weg: Xdebug

    Sicherlich ist Xdebug das beste Werkzeug um Fehler im PHP Code zu suchen. Es hält die Ausführung von PHP an und man kann sich alle aktuell initialisierten Variablen genau anschauen.

    Allerdings stehe ich mit Xdebug absolut auf Kriegsfuß. Die Installation ist leider alles andere als einfach. Ich brauche meistens 1-2 Stunden um Xdebug auf meinen Mac zum Laufen zu bekommen. Dann bin ich aber meistens so genervt, dass ich Feierabend mache und Xdebug einige Tage in Ruhe lasse. Brauche ich es dann ein paar Tage später wieder, ist schon wieder irgendetwas kaputt, z.B. Xdebug hält die Ausführung nicht an, obwohl ich einen Breakpoint gesetzt habe. In anderen Dateien funktioniert es aber ohne Probleme ?.

    Statt wieder 1-2 Stunden in das Debuggen des Debuggers zu investieren, spring ich dann wieder auf die alt bewährte Methode print_r…, die immer funktioniert.

    dd & dump

    Aus der Laravel-Welt (wobei diese auf einem Synfony Component basieren) sind mir die zwei kleine Hilfsfunktionen dd & dump bekannt, die im Prinzip das gleich wie print_r bzw. var_dump machen, aber viel kürzer zu schreiben sind und die Ausgabe hübsch machen.

    dump des WP_Query Objektes

    dump gibt einfach eine oder mehrere Variable aus:

    dump($value);

    dump($value1, $value2, $value3, ...);Code-Sprache: PHP (php)

    dd ist eine Abkürzung für dump & die und gibt eine oder mehrere Variablen aus und beendet anschließend die Ausführung:

    dd($value);

    dd($value1, $value2, $value3, ...);Code-Sprache: PHP (php)

    In WordPress nutzen

    Kann man das nicht auch in WordPress nutzen? Natürlich und es gibt sogar schon ein passendes Plugin: Laravel DD for WordPress

    Einfach in der Entwicklungsumgebung installieren & aktivieren und fröhlich dd & dump schreiben!

    Nicht vergessen solltet ihr aber alle dd & dump’s vor dem Push in die Live-Seite wieder zu entfernen (ist mir auch schon passiert). Sonst gibt es sicherlich wieder ein paar nette Fehler zu debuggen.

    Next Level: Ray

    Noch ein Schritt weiter geht die kostenpflichtige App Ray (29€/Jahr, kann aber kostenlos getestet werden) für MacOS. Statt dump($value) schreibt man ray($value) und die Ausgabe erfolgt direkt schön aufbereitet in der Ray App statt im Browser.

    Um Ray in WordPress nutzen zu können, müsst ihr neben der Ray App in eurer Entwicklungsumgebung das Ray WordPress Plugin installieren. Anschließend kann das debuggen beginnen.

    Einen guten Eindruck vermittelt das folgende kurze Video:

    Durch Laden des Videos akzeptierst du die Datenschutzerklärung von Vimeo.
    Video laden
    Auswahl speichern & immer Vimeo laden

    Ray wurde von Spatie, einer belgischen Agentur spezialisiert auf Laravel, entwickelt. Spatie ist in der Laravel Community dafür bekannt sehr viele Open Source Laravel Packages zu pflegen. Zunehmend entstehen aber auch größere jedoch kostenpflichtige Produkte wie Ray oder Mailcoach (Newsletter-Versand). Sowohl die Packages als auch die Produkte haben eine außergewöhnlich hohe Codequalität und werden bei neuen Laravel-Releases innerhalb weniger Tagen geupdated. Alleine deswegen kann man hier die 29€ pro Jahr (kein Abo nur eine jährliche Lizenz) getrost investieren.

    Laravel Tools für WordPress

    Dieser Beitrag ist Teil meiner kleinen Serie Laravel Tools für WordPress, wo ich euch Tools vorstelle, die ich aus der Laravel-Welt kenne aber auch problemlos für WordPress genutzt werden können.

    Debuggen mit dd & dump statt print_rLokale Entwicklungsumgebung mit ValetWebpack in elegant mit Laravel Mix 6

  2. Hallo Johannes, ich wollte dir rasch ein Feedback geben, dass ich deine Anleitung erfolgreich umsetzen konnte. Beim Schritt 1 „MySQL & PHP installieren“ war ich für einen Moment irritiert, dass nicht gleich ein Webserver mitinstalliert wird, weil ich sonst an die Einrichtung eines LEMP-Stack gewöhnt bin. Aber das erfolgt dann ja wenig später in Schritt 5 „Valet installieren“. Wenn ich an das vor Jahren so beliebten „Varying Vagrant Vagrants“ denke, lässt sich mit deiner Anleitung rasch und unkompliziert eine Entwicklungsumgebung aufsetzen. Bookmark gespeichert. Vielen Dank.

    1. Hallo Bego,

      danke für dein Feedback! Ich habe mal im ersten Schritt ergänzt, dass NGINX erst im 5. Schritt zusammen mit Valet installiert wird. Auch habe ich die Installation der Datenbank noch einmal separat aufgeführt.

Erwähnungen

Likes

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert