Apache einschalten
- Terminal öffnen, indem Sie auf die Lupe in der oberen rechten Ecke Ihres Bildschirms klicken und nach Terminal suchen
- Tippen Sie
sudo apachectl start
und drücken Sie die Eingabetaste - Öffnen Sie Safari (oder einen Browser Ihrer Wahl), Geben Sie localhost in die Adressleiste ein und drücken Sie die Eingabetaste
Können Sie nicht glauben, dass es so einfach ist? Ist es aber! Sie sollten nun It works! im Browser sehen.
Schalten Sie PHP ein
Mac wird bereits mit PHP ausgeliefert, Sie müssen es also nicht von PHP.net installieren. Vor High Sierra (Version 10.13) war auf dem Mac bereits PHP 5 installiert. Dies führte zu Verärgerung bei den Benutzern, da PHP 7 nicht mitgeliefert wurde, so dass man ein Upgrade von PHP 5 auf PHP 7 erst mühsam durchführen musste. Glücklicherweise kommt High Sierra bereits mit PHP 7.1!!!
- Öffnen Sie Terminal und geben Sie
sudo nano /etc/apache2/httpd.conf
ein und drücken Sie die Eingabetaste - Drücken Sie Strg+W, um eine Suche zu starten
- Suchen Sie nach php und drücken Sie die Eingabetaste. Sie werden folgendes sehen:
- Löschen Sie das # von
#LoadModule php7_module libexec/apache2/libphp7.so
- Drücken Sie Strg+O gefolgt von Enter, um die soeben vorgenommene Änderung zu speichern
- Drücken Sie Strg+X, um nano zu verlassen
- Tippen Sie
sudo apachectl restart
und drücken Sie Enter
Sie haben gerade PHP 7 eingeschaltet. Gute Arbeit bis jetzt!
Seitenordner erstellen
- Klicke auf Finder in der linken unteren Ecke deines Bildschirms und klicke auf Go > Home in der oberen Navigationsleiste. Dadurch gelangen Sie in Ihr Home-Verzeichnis, das auch den Namen Ihres Computers trägt; in diesem Fall ist es david.
- Erstellen Sie einen neuen Ordner und nennen Sie ihn Sites (Das unten gezeigte Safari-Symbol wird automatisch zum Ordner Sites hinzugefügt, wie unten gezeigt)
- Öffnen Sie Ihren bevorzugten Texteditor und erstellen Sie eine Datei namens index.php mit folgendem Code:
<?phpecho "Hello From Sites Folder!";phpinfo();?>
- Speichern Sie index.php in dem von Ihnen erstellten Ordner Sites
- Gehen Sie zurück zum Terminal und geben Sie
sudo nano /etc/apache2/httpd.conf
- Strg+W drücken, um die Suchfunktion aufzurufen
- Suchen Sie nach Library und drücken Sie Enter. Sie sollten dies sehen:
- Ersetzen Sie beide Vorkommen von
/Library/WebServer/Documents
durch/Users/david/Sites
(anstelle von david verwenden Sie Ihren Namen, den Sie oben auf Ihrem Terminal neben dem Home-Symbol finden) - Drücken Sie Strg+O gefolgt von Enter, um die Änderungen zu speichern
- Drücken Sie Strg+X, um nano zu verlassen
- Tippen Sie
sudo apachectl restart
und drücken Sie Enter
Gehen Sie zurück zu Safari und aktualisieren Sie die localhost Seite und Sie werden Hello From Sites Folder! mit PHP-Informationen, die zeigen, dass PHP 7 verwendet wird.
MySQL installieren
- Gehen Sie zu https://dev.mysql.com/downloads/mysql
- Scrollen Sie nach unten, bis Sie drei Download-Buttons sehen und klicken Sie auf den neben DMG Archive
- Scrollen Sie nach unten und klicken Sie auf No thanks, just start my download
- Klicken Sie auf die heruntergeladene Datei, doppelklicken Sie auf die pkg-Datei und führen Sie die Installation durch, die so aussehen sollte:
- Am Ende der Installation erscheint ein Popup, in dem Sie Ihren MySQL-Benutzernamen (root) und Ihr Passwort (8hxKsiIh?YMt). Ihr Passwort wird anders lauten. Kopieren Sie das Passwort in eine Textdatei (oder machen Sie einen Screenshot) und drücken Sie auf OK. Tun Sie dies jetzt, denn es wird schwierig sein, das Passwort zurückzusetzen, wenn Sie es nicht kennen.
- Drücken Sie auf das Apple-Logo oben links auf Ihrem Bildschirm und gehen Sie zu Systemeinstellungen
- Klicken Sie auf MySQL und Sie werden sehen, dass es ausgeschaltet ist
- Drücken Sie auf MySQL Server starten, um es einzuschalten und Sie werden sehen:
- Gehen Sie zurück zum Terminal und geben Sie
sudo /usr/local/mysql/bin/mysql -u root -p
- Wenn Sie die Eingabetaste drücken, werden Sie nach Ihrem Passwort gefragt. Das ist das Passwort, das du benutzt, wenn du dich bei deinem Mac anmeldest
- Dann heißt es Enter Password: was bei mir 8hxKsiIh?YMt ist (du solltest das Passwort benutzen, das du vorher kopiert hast, anstatt 8hxKsiIh?YMt). Du wirst diesen Bildschirm sehen:
- Tippe
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
und drücke die Eingabetaste - Geh zu https://www.sequelpro.com und lade Sequel Pro herunter. Das ist wie phpMyAdmin, aber besser, weil es eine Desktop-Anwendung ist.
- Gehen Sie durch die Installation, öffnen Sie Sequel Pro und geben Sie 127.0.0.1 für den Host ein. Geben Sie root für den Benutzernamen und newpassword für das Passwort ein. Drücken Sie auf Connect
- Klicken Sie oben links auf Choose Database… gefolgt von Add Database…
- Geben Sie der Datenbank den Namen mydb und drücken Sie die Eingabetaste
- Klicken Sie dann auf das Pluszeichen unten links, um eine neue Tabelle zu erstellen. Nennen Sie die Tabelle mytable und drücken Sie add
- Klicken Sie auf das Pluszeichen direkt über dem Wort INDEXES und nennen Sie das Feld message. Setzen Sie den Typ auf VARCHAR und geben Sie ihm eine Länge von 200.
- Klicken Sie oben auf Inhalt.
- Klicken Sie unten auf das Pluszeichen (das links neben dem Minuszeichen)
- Geben Sie dem neuen Eintrag eine ID von 1 und setzen Sie die Nachricht auf MySQL funktioniert perfekt!
- Öffnen Sie die Datei index.php in Ihrem Sites-Ordner und ändern Sie den Code zu
<?php$con = new mysqli("127.0.0.1", "root", "newpassword", "mydb");$message = $con->query("SELECT message FROM myTable")->fetch_object()->message;$con->close();echo "$message <br/>";echo "Hello From Sites Folder!";phpinfo();
Dieses Beispiel ist natürlich immun gegen SQL-Injection, da es keine vom Benutzer eingegebenen Werte gibt. Wenn Sie jedoch MySQLi Prepared Statements nicht so gut verstehen, wie Sie es gerne hätten, finden Sie in diesem Beitrag ein hervorragendes Tutorial zur Vermeidung von SQL-Injection 😉. Es gibt sogar eine PDO-Version, wenn Sie das bevorzugen.
- Aktualisieren Sie localhost auf Safari und Sie sollten sehen:
Gut! Jetzt funktioniert MySQL, so dass Sie localhost verwenden können, um Informationen in Datenbanken zu speichern.
Make SEO Friendly URLs Work
Anstatt zu localhost/profile.php?user=david zu gehen, sieht es schöner aus, wenn Sie zu localhost/profile/david gehen können. Damit das funktioniert, müssen Sie mod_rewrite aktivieren, damit Sie RewriteRules verwenden können.
- Gehen Sie zum Terminal und geben Sie
sudo nano /etc/apache2/httpd.conf
ein, gefolgt von der Eingabetaste - Drücken Sie Strg+W, geben Sie rewrite, und drücke die Eingabetaste
- Entferne das # in
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
- Drücke Strg+O gefolgt von der Eingabetaste, um zu speichern
- Drücke Strg+X, um nano zu beenden
- Tippe
sudo apachectl restart
Jetzt kannst du freundliche URLs verwenden, wenn du mit localhost entwickelst.
Make .htaccess Work
Dies ist nicht notwendig, damit Vanity-URLs funktionieren, aber ich persönlich bevorzuge die Verwendung einer .htaccess-Datei, da sie mir die Versionskontrolle ermöglicht.
- Gehen Sie zum Terminal und geben Sie
sudo nano /etc/apache2/httpd.conf
ein, gefolgt von der Eingabetaste - Drücken Sie Strg+W, geben Sie
AllowOverride controls
ein, und drücken Sie die Eingabetaste - Ändern Sie
AllowOverride None
inAllowOverride All
- Drücken Sie Strg+O gefolgt von der Eingabetaste, um zu speichern
- Drücken Sie Strg+X, um nano zu beenden
- Tippen Sie
sudo apachectl restart
Jetzt können Sie eine .htaccess-Datei in den Sites-Ordner einfügen, und es wird gut funktionieren.
Schalten Sie SSL/HTTPS ein
Anstatt über localhost auf Ihre Website zuzugreifen, möchten Sie vielleicht über https://localhost auf Ihre Website zugreifen. Wenn Sie SSL einschalten, sehen Sie in der URL-Leiste ein Vorhängeschloss neben localhost.
- Gehen Sie zum Terminal und geben Sie
sudo nano /etc/apache2/httpd.conf
ein, gefolgt von der Eingabetaste - Drücken Sie Strg+W, geben Sie socache_shmcb_module, und drücke die Eingabetaste
- Lösche das # aus
#LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
- Drücke Strg+W, tippe mod_ssl und drücke die Eingabetaste
- Lösche das # aus
#LoadModule ssl_module libexec/apache2/mod_ssl.so
- Drücke Strg+W, Geben Sie httpd-ssl ein und drücken Sie die Eingabetaste
- Löschen Sie die # aus
#Include /private/etc/apache2/extra/httpd-ssl.conf
- Drücken Sie Strg+O gefolgt von der Eingabetaste, um zu speichern
- Drücken Sie Strg+X, um nano zu beenden
- Geben Sie
sudo nano /etc/apache2/extra/httpd-ssl.conf
ein und drücken Sie die Eingabetaste - Drücken Sie Strg+W, geben Sie ServerName ein und drücken Sie die Eingabetaste
- Ersetzen Sie www.example.com:443 durch localhost
- Rechts oben sehen Sie
/Library/WebServer/Documents
. Ersetzen Sie diese durch/Users/david/Sites
. (Verwenden Sie Ihren Namen anstelle von david, wie Sie es zuvor getan haben) - Fügen Sie direkt unter
<VirtualHost_default_:443>
ein (ersetzen Sie aber david durch Ihren Namen):
<Directory "/Users/david/Sites"> Options All MultiviewsMatch Any AllowOverride All Require all granted</Directory>
- Ihr Terminal sollte jetzt so aussehen:
- Drücken Sie Strg+O gefolgt von Enter, um zu speichern
- Drücken Sie Strg+X, um nano zu verlassen
- Tippen Sie
sudo nano /etc/ssl/openssl.cnf
und drücken Sie Enter - Unten in openssl.cnf fügen Sie Folgendes hinzu:
subjectAltName = DNS:localhost
- Ihr Terminal sollte wie folgt aussehen:
- Drücken Sie Strg+O gefolgt von Enter, um zu speichern
- Drücken Sie Strg+X, um nano zu verlassen
- Tippen Sie
sudo openssl req -extensions san -config /etc/ssl/openssl.cnf -x509 -nodes -newkey rsa:4096 -keyout /private/etc/apache2/server.key -out /private/etc/apache2/server.crt -days 365 -subj "/C=US/ST=Florida/L=Boca Raton/O=WebsiteBeaver/CN=localhost"
und drücken Sie Enter. (Sie können stattdessen Ihre Daten verwenden, aber ändern Sie nicht localhost)
- Type
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /private/etc/apache2/server.crt
und drücken Sie die Eingabetaste
- Type
sudo apachectl
restart - Nun gehen Sie zu https://localhost in Ihrem Browser, und Sie werden ein Vorhängeschloss neben der URL sehen, was bedeutet, dass Sie mit der Einrichtung von SSL fertig sind!