Heinrich Schiller  26.08.2019 21:56

PHP Entwicklungsumgebung unter Macos mit XAMPP einrichten

Ich möchte hier die Installation meiner PHP Entwicklungsumgebung unter Macos vorstellen und dokumentieren. Ich mache die Installationen nicht oft und leider passiert es während der Installation oft, das dann erstmal nichts mehr wie gewohnt geht und ich unter anderem dann im Netz alles wieder suchen muss. Aus meiner Errinerung heraus, war es früher für mich etwas einfacher eine solche Entwicklungsumgebung zu installieren und konfigurieren, weil Macos noch einige Dinge mitbrachte. Diesmal musste ich (vermutlich) unter anderem auch auf das Homebrew ausweichen, weil mir zum Beispiel make gefehlt hat. Ich meine das es früher beim Macos dabei war...

Was möchte ich hier behandeln?

Ich möchte die Installation von XAMPP 7.3.12 unter Macos Catalina beschreiben. PHP 7.4 ist bereits erschienen, aber noch nicht in XAMPP veröffentlich. Diese Version bringt einige Features die ich liebend gern bereits jetzt nutzen würde, habe mich letztendlich dazu entschieden den Wechsel zu verschieben bis PHP min. PHP 7.4.2 erscheint. Bis dahin werden viele Tools wie Xdebug etc. diese Version vollständig unterstützen. Darum habe ich mich für etwas "abgehangeres" PHP entschieden. Konkret geht es mir darum:

Installation und Konfiguration von XAMPP

XAMPP will laut der Beschreibung auf ihrer Projektseite, eine vollständige Webserver-Distribution sein und nennt dabei Namen, Apache (Webserver), MariaDB (Datenbank), PHP (Skriptsprache) und Perl (Skriptsprache). Für mich gilt XAMPP als ziemlich Umfangreich, auch weil ich nicht alles nutze was mir diese Distribution liefert. Also ich nutze zum Beispiel kein Perl.

Aber warum empfehle ich hier eigentlich XAMPP? XAMPP nutze ich schon ziemlich lange und habe schon die ein oder andere Konfiguration einrichten, testen und einsetzen können. Hauptsächlich dient es mir als Entwicklungsumgebung für meine Websoftware auf PHP-Basis.

Macos bietet doch selbst einen Webserver mit PHP aus, warum also etwas anderes nutzen? Persönlich ist mir das mitgelieferte Macos Packet zu alt und man kann nicht einfach so, etwas neueres installieren. XAMPP bietet einen Installer wo man eine Version installieren kann, oder eben auch vollständig deinstallieren. Und das möchte ich jetzt ausführen. Für Macos liefert XAMPP ganze 2 Versionen von XAMPP aus. Die neueste Kreation ist eine Linux-VM, wo man seine Software dann hortet und ausführt. Persönlich habe ich die VM-Version nicht verstanden, schätze aber das es für einen Produktiven Betrieb gedacht ist, den als Entwicklungsumgebung wirkt die zu umständlich. Die zweite Version ist die klassische XAMPP-Version, einfacher in der Handhabung und mir persönlich flexibler.

Leider ist die Auswahl der Version etwas umständlich. Auf der Projektseite ist es nicht mehr ersichtlich, welche Version nun die VM oder die Klassische ist. Ärger ist meist vorprogrammiert, den schnell erwischt man die falsche Version. Einen kleinen Trick gibt es dennoch. Die VM-Version ist ca. 300 MB groß, die Klassische ca. 150 MB. Dieses Tutorial dreht sich um die Klassische Version. Also installiert man diese über den mittgelieferten Installer, der eigentlich keiner Beschreibung bedarf.

Die Integration der XAMPP-Komponenten ins Macos

Ist XAMPP erstmal erfolgreich installiert, kann man diese über den XAMPP-Application-Manager steuern. Einzelne Dienste lassen sich also starten oder beenden. Nun ist es so das ich PHP, MariaDB so nutzen möchte, als ob sie ein fester Bestandteil von Macos währen. Aus dem Terminal heraus möchte ich zum Beispiel PHP direkt aufrufen und nutzen können. Das erlaubt mir PHP und MariaDB auch ausserhalb von XAMPP zu nutzen. Somit kann ich XAMPP auch über XAMPP-zugedachten Dingen hinaus nutzen. Also zuerst die Programme aus XAMPP/bin in das /usr/local/bin verlinken:

Nach dem Neustart des Terminals kann man nun diese Befehle von überall her nutzen. Hat man sein kleines PHP-Projekt im Nutzerverzeichnis und nicht im XAMPP verzeichnis, kann man es nun sein PHP-Projekt eben an Ort und stelle ausführen und muss es nun nicht "umständlich" erst ins htdocs von XAMPP verlagern. Ob nun das ganze wirklich funktioniert, findet man mit "php -v" heraus. Dort sollte nun die PHP-Version der XAMPP ausliefert drin stehen. Die beiden nachfolgenden verlinkungen müssen nicht sein, wenn man nur an PHP interesse hat, sind aber für spätere Schritte wichtig, wo ich Xdebug einbauen möchte. Das kommt aber später in einem anderem Artikel.

Einrichten eines Projektordners außerhalb von XAMPP

Meine Projekte habe ich unter /Users/heinrich/Projects eingerichtet. Früher lagen diese immer im htdocs-Ordner von XAMPP, weil dort auch die VirtualHosts funktionierten und zwar nur dort. Dabei kann man Apache mitteilen wo man seine Projekte lagern möchte. Dazu muss die httpd.conf etwas angepasst werden.

In dem Modul unixd_module (bei mir so ab Zeile 164) muss der Benutzer und die Gruppe eingetragen werden. Bei mir wäre das:


#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User heinrich
Group admin

Was es macht, steht im Kommentar. Das brauchen wir um in VirtualHosts andere Pfade anzugeben, welche wir dann mit unserem Benutzernamen und Gruppennamen ansprechen können. Welches das ist zeigt zum Beispiel der Konsolenbefehl ls (List) wenn wir unseren Projektordner betrachten.

Einrichten von VirtualHosts unter XAMPP-Apache

Für VirtualHosts brauchen wir mehrere Dinge. Zuerst muss die URL bekannt sein, die aufgelöst werden muss. Das erreicht man über verschiedene Wege, ich mache es mir einfach und schreibe meine URL in die hosts-Datei. Wenn man die hosts-Datei unter /etc/hosts aufmacht, steht dort wenig drin. Eine Adresse 127.0.0.1 steht bereits fest und verweist auf localhost. Wenn man im Konsolenfenster ping localhost eingibt, stellt man fest das dieser Computer erreichbar ist. Ist XAMPP aktiviert, kann man im Browser ebenfalls localhost eingeben und prompt landet man auf der XAMPP seite.

Jetzt lege ich eine neue Adresse unter 127.0.0.1 localhost fest, zum Beispiel 127.0.0.1 test.local. Speichert man diese ab und pingt diese an, im Terminal mit ping test.local, ist man wieder erreichbar. Gibt man test.local im Browser ein, gibt der Web-Server einen Fehler aus. Um diesen kümmern wir uns jetzt. Zuerst muss in der httpd.conf die Unterstützung für VirtaulHosts aktiviert werden. Die findet man einfachsten wenn man nach # Virtual hosts sucht und nimmt das Raute-Zeichen raus. Nun öffnet man die httpd-vhosts.conf und legt sein erstes Projekt an. Als Beispiel sind dort schon 2 Einträge zufinden, welche man kopieren und anpassen kann.

Meine sieht zum Beispiel wie folgt aus:


    DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/"
    ServerName localhost



    DocumentRoot "/Users/heinrich/Projects/test/"
    ServerName test.local
    ErrorLog "logs/playground.test-error_log"
    <Directory "/Users/heinrich/Projects/test">
        AllowOverride All
        Require all granted
    

DocumentRoot zeigt bei mir auf meinen Projekt-Ordner unter /Users/heinrich/Projects/test. ServerName sollte mit dem Namen aus der /etc/hosts-Datei passen. Das war test.local. Mit Directory stelle ich noch paar Regeln fest, diese sind in der Apache Dokumentation zu finden.

Wenn man jetzt unter dem besagten Pfad ein Projekt mit einer index.html erstellt, sollte bei dem Aufruf der URL der Inhalt des HTML-Dokuments angezeigt werden. Das wars.  Im nächstem Artikel möchte Xdebug einrichten und zeigen wie man auf ihn unter Visual Studio Code zugreift.