Apache auf macOS

Apache ist schon seit immer 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 wichtig!

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

High Sierra braucht noch ein bisschen mehr, sonst rennt man in einen 403 Forbidden Error:

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 lustige Sachen ausgeben:

<?php phpinfo(); ?>