Apache auf macOS
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(); ?>
last update: 2024-01-28 17:42:17 +0100