===== MAMP (Aktivierung + Komplettierung) =====
Da XAMPP scheinbar unter reinen 64-Bit-Systemen (OS X und Linux) seit einiger Zeit ein paar Probleme hat,
habe ich bereits zu Zeiten von OS X 10.11/El Capitan (akutell macOS 10.15/Catalina) nach einer anderen Lösung suchen müssen.
Da sowohl [[http://httpd.apache.org/|Apache]] (aktuell 2.4.41) als auch [[http://php.net/|PHP]] (aktuell 7.3.11) bei OS X seit geraumer Zeit mit an Bord sind,
möchte ich sie nutzen.
Hierzu brauchen sie nur "etwas" umkonfiguriert zu werden.
==== Zusätzliche Apache HTTPD-Module (PHP und userdir) aktivieren ====
$ sudo sed -E -e 's!(^#)(LoadModule\ userdir_module\ libexec/apache2/mod_userdir.so)!\2!' -i "" /private/etc/apache2/httpd.conf
$ sudo sed -E -e 's!(^#)(LoadModule\ php7_module\ libexec/apache2/libphp7.so)!\2!' -i "" /private/etc/apache2/httpd.conf
$ sudo sed -E -e 's!(^#)(Include\ /private/etc/apache2/extra/httpd-userdir.conf)!\2!' -i "" /private/etc/apache2/httpd.conf
Im Folgenden gehe ich davon aus, dass Dein Benutzer-Login "user" (also ggf. anpassen!) ist!
==== "Benutzerverzeichnisse" konfigurieren ====
$ sudo sh -c 'cat <
==== PHP für die per Homebrew nachinstallierte MariaDB vorbereiten ====
$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
$ sudo sed -e 's!pdo_mysql.default_socket=!&\ /tmp/mysql.sock!' -i "" /private/etc/php.ini
$ sudo sed -e 's!mysql.default_socket\ =!&\ /tmp/mysql.sock!' -i "" /private/etc/php.ini
$ sudo sed -e 's!mysqli.default_socket\ =!&\ /tmp/mysql.sock!' -i "" /private/etc/php.ini
==== Apache HTTP-Server starten ====
Da der Apache bei mir standardmäßig auf dem Client nicht automatisch gestartet wird, starte ich ihn jetzt:
$ sudo apachectl start
Sollte er bei Dir aus irgend einem Grund bereits laufen, einfach neustarten:
$ sudo apachectl restart
==== 1. Test ====
Nun noch schnell eine einfache Datei für Testzwecke anlegen:
$ mkdir ~/Sites
$ echo "" > ~/Sites/phpinfo.php
Und Alles bis hier (also noch ohne MariaDB) testen:
$ open -a Safari "http://localhost/~user/phpinfo.php"
{{ :wip:os_x_el_capitan_phpinfo.png?800 | phpinfo }}
Nach ein paar Jahren MacPorts (https://www.macports.org/) bin ich nun bei Homebrew gelandet.
Homebrew installieren: http://brew.sh/index_de.html
==== MariaDB installieren und konfigurieren ====
$ brew install mariadb
$ mysql_secure_installation
==== MariaDB-Server starten ====
$ mysql.server start
bzw. wenn der MariaDB-Server automatisch im Rahmen jeden Neustarts gestartet werden soll:
$ brew services start mysql
==== Adminer ====
Eine schlanke Alternative Zu phpmyadmin downloaden:
$ curl "https://www.adminer.org/static/download/4.2.4/adminer-4.2.4.php" > ~/Sites/adminer-4.2.4.php
==== 2. Test ====
$ open -a Safari "http://localhost/~user/adminer-4.2.4.php"
{{ :wip:adminer.png?800 | adminer }}
**Fertig?**
Es kann durchaus vorkommen, dass man gerade dann feststellen darf,
dass ein PHP-Modul fehlt, wenn man es braucht!
Seit 10.8 (Moutain Lion) soll [[http://pear.php.net/|pear]] (PHP Extension and Application Repository)
nicht mehr Bestandteil von OS X sein?
==== pear installieren und konfigurieren ====
$ cd ~/Downloads
$ curl -O http://pear.php.net/go-pear.phar
$ php -d detect_unicode=0 go-pear.phar
$ sudo sh -c 'echo "include_path=".:/Users/user/pear/share/pear"" >> /private/etc/php.ini'
$ sudo apachectl restart
In einem "jungfräulichen" OS X hat haben [[https://rvm.io/|rvm]] (Ruby Version Manager) und Homebrew lediglich ".bash_profile" angepasst,
weshalb es auch mein bevorzugter Ort für Anpassungen ist.
$ echo 'export PATH="$PATH:/Users/neupat75/pear/bin"' >> ~/.bash_profile
$ . ~/.bash_profile
==== pear testen bzw. aktualisieren ====
$ pear update-channels
$ pecl update-channels
$ pear upgrade
$ pear upgrade-all
Als zwischeinzeitlicher [[http://rubyonrails.org/|Ruby on Rails]]-"Bastler" habe ich [[http://yaml.org/|yaml]] lieben gelernt.
Ganz nebenbei ist es ein praktisches Beispiel zum Nachinstallieren eines PHP-Moduls.
Bevor überhaupt ein PHP-Modul gebaut werden kann, muss sichergestellt werden, dass die Xcode-Kommandozeilentools nebst Header-Dateien (.h) installiert sind und gefunden werden:
$ xcode-select --install
Ohne yaml-Bibliotheken kann auch kein yaml-PHP-Modul gebaut werden:
==== libyaml installieren ====
$ brew install libyaml
Da da /usr in einem OS X-System seit geraumer Zeit gegen Veränderungen besonders gut geschützt wird,
müssen wir diesen Schutz kurzzeitig deaktivieren:
==== System Integrity Protection deaktivieren ====
Mac neustarten und sofort nach dem Apple-typischen Ton beim Booten eins Mac folgende Tastenkombination drücken,
wonach das System von der Recovery-Partition starten sollte:
cmd + R
Hier wählen wir aus dem Menü zuerst "Dienstprogramme" und aus der Liste schließlich "Terminal":
$ csrutil disable
$ reboot
Nach dem Neustart melden wir uns als "user" an und öffnen wieder ein Terminal.
==== yaml-PHP-Modul bauen ====
$ sudo pecl install yaml
==== PHP-Konfiguration anpassen ====
$ sudo sh -c 'echo "extension=yaml.so" >> /private/etc/php.ini'
$ sudo apachectl restart
==== 3. Test ====
$ cat <
$ cat <
yaml
";
print_r( \$cfg );
echo "