Tutorial
LAMP-VM für Mac OS X
Feinschliff für den VM-Apache und den Mac
mod_rewrite
Viele von uns nutzen das Modul mod_rewrite, etwa für URL-Mapps, automatische Weiterleitungen, Zugriffsrechte etc. mod_rewrite müssen wir noch im Apache aktivieren:
sudo a2enmod rewrite
sudo service apache2 restart
In einer phpinfo()-Übersicht könnten wir nun erkennen, dass mod_rewrite bereits aktiviert ist. Wer (wie vermutlich viele Entwickler) die mod_rewrite-Funktionen hauptsächlich über eine .htacess-Datei steuert, muss dies noch in der Apache-Konfiguration ermöglichen.
Dazu wechseln wir mit cd /etc/apache2/sites-available/ in den Sites-Konfigurations-Ordner und passen mit sudo nano die entsprechende Default-Datei mit der Dateiendung .conf an. Normalerweise ist dies die Datei 000-default.conf.
Hier sollten wir (unter 14.04) nur einen Knoten <VirtualHost> finden. Wir bewegen uns ans Ende der Datei und fügen einen Knoten für den Standard-Document-Root /var/www/html hinzu:
<Directory "/var/www/html">
AllowOverride All
Require all granted
</Directory>
Mit sudo service apache2 restart müssen wir den Apache erneut durchstarten. Danach können wir mod_rewrite auch über eine .htacess-Datei steuern.
Xdebug konfigurieren
Xdebug ist in seiner Standardeinstellung nicht für Remote-Debugging ausgelegt. Die Xdebug-Konfiguration funktioniert über eine INI-Datei. In vielen Beispielen, die wir im Internet finden, sind die Einstellungen in der php.ini-Datei zentralisiert. Das ist bei unserer Installation nicht der Fall. Unsere PHP-relevanten Konfigurations-Einstellungen finden wir modular im Ordner etc/php/7.0/mods-available/.
Wir öffnen also mit nano die dort befindliche xdebug.ini und fügen der Datei ein paar Zeilen hinzu.
sudo nano /etc/php/7.0/mods-available/xdebug.ini
Die Datei sollte zunächst nur einen einzigen Eintrag haben und zwar der Verweis auf die zend_extension. Wir fügen nun folgende Zeilen hinzu, um das Remote-Debugging mit Xdebug zu ermöglichen. Letztlich sollte die Datei etwa so aussehen:
zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_connect_back=1
xdebug.remote_port = 9000
xdebug.scream=0
xdebug.show_local_vars=1
xdebug.idekey=PHPSTORM
Wir speichern die Xdebug-Konfigurationsdatei und starten den Apache mit sudo service apache2 restart neu.
Der Mac-Browser soll ohne IP auskommen
Bisher haben wir nur dafür gesorgt, dass unsere SSH-Verbindung den Host “ubuntuphp7” kennt. Wir wollen aber auch, dass unsere Browser diesen Host kennen, damit wir nicht ständig eine unbequeme IP eingeben müssen. Dies erledigen wir durch eine einfache Anpassung der /etc/hosts/-Datei.
Wir starten ein neues Terminal-Fenster und öffnen mit sudo nano /etc/hosts die Hosts-Datei unseres Apple-Computers und fügen (entsprechend der Wahl unserer IP-Adresse) etwa folgende Zeile hinzu:
192.168.56.10 ubuntuphp7
Nun sollten wir anstelle http://192.168.56.10 etwa auch http://ubuntuphp7 aufrufen können. Falls das nicht funktioniert, löschen wir noch den DNS-Cache mit dscacheutil -flushcache. Spätestens jetzt sollte unser Mac unsere VM auch über den Hostnamen adressieren können.
Fehlerausgabe für den Browser aktivieren
Per Standard landen PHP-Fehler nur im Log unter /var/log/apache2/error.log. Wem das für seine Entwicklungszwecke zu unkomfortabel ist, kann das entweder mit einer lokalen .htacess-Datei übersteuern oder aber die php.ini unserer Installation anpassen.
Mit sudo nano /etc/php/7.0/apache2/php.ini öffnen wir die .ini-Datei zur Bearbeitung und ändern die beiden Einträge display_errors und display_startup_errors auf On und speichern die Datei.
display_errors und display_startup_errors in der php.ini auf On.
Danach starten wir den Apache einmal mit sudo service apache2 restart neu.
locate-Datenbank aktualisieren
Wer viel auf der Konsole unterwegs ist, weiß womöglich den Befehl locate zu schätzen. Ich jedenfalls vergesse ständig die Standardpfade auf meinen Linux-Servern und verwende daher häufig diesen Befehl. Damit uns ein Befehl wie locate php.ini auch Ergebnisse liefert, müssen wir einmal die dazugehörige Datenbank auffrischen.
sudo updatedb
Und weiter.
Im nächsten Schritt geht es darum, dass wir dem VM-Apache ermöglichen, direkt Inhalte aus einem Verzeichnis auf unserem Mac-Dateisystem auszuliefern. Aus diesem Grund haben wir die VirtualBox GuestAdditions installiert.