Apache auf macOS

Im Prinzip funktioniert das alles noch.

Allerdings wird die Config durch die System Integrity Protection beim nächsten Reboot oder spätestens Update wieder zurück gesetzt…

Apache ist schon lange mit dabei, bloß irgendwann ist in den System Preferences das Häkchen zum einschalten verschwunden.

Ab ins Terminal, es reicht ein:

sudo apachectl start

stop, restart und configtest sind auch hilfreich!

Unter http://localhost sollte nun der It works! Text stehen.

  • DocumentRoot: /Library/WebServer/Documents/
  • UserLevelRoot: /Users/User/Sites

User-Directories

Für die User-Directories muss man noch ein bisschen basteln:

Es braucht erst einen Sites Ordner:

mkdir /Users/User/Sites

Dann eine /etc/apache2/users/user.conf erstellen:

<Directory "/Users/User/Sites/">
    AllowOverride All
    Options Indexes MultiViews FollowSymLinks
    Require all granted
</Directory>

Und in der /etc/apache2/httpd.conf noch ein paar Module einschalten, sowie die extra/httpd-userdir.conf einbinden lassen:

LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Include /private/etc/apache2/extra/httpd-userdir.conf

Ab High Sierra braucht man noch ein bisschen mehr sonst rennt man in einen 403 Forbidden Fehler:

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so

Include /private/etc/apache2/extra/httpd-vhosts.conf

Damit die oben erstellte user.conf geladen wird, in der /etc/apache2/extra/httpd-userdir.conf den Kommentar von dieser Zeile entfernen:

Include /private/etc/apache2/users/*.conf

Fertig! Nach einem apachectl restart sieht man nun unter http://localhost/~user den Inhalt von /Users/User/Sites.

PHP and Dynamite

Man kommt leider immer noch nicht drum rum, manchmal braucht man wirklich noch PHP..

Kommt in ganz moderner 5er Version, seit kurzem sogar als 7er..

In der /etc/apache2/httpd.conf muss man dazu den Kommentar von dieser Zeile entfernen:

LoadModule php5_module libexec/apache2/libphp5.so

bzw:

LoadModule php7_module libexec/apache2/libphp7.so

apachectl restart, und schon sollte eine info.php funktionieren:

<?php phpinfo(); ?>