===== 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 <> /private/etc/apache2/extra/httpd-userdir.conf # added by user: AllowOverride All Options Indexes FollowSymLinks MultiViews Require all granted EOF' ==== 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 < ~/Sites/db.cfg.yml --- db: adapter: mysql host: localhost port: 3306 database: data username: user password: pass EOF $ cat < ~/Sites/db.inc.php yaml

yaml

";
print_r( \$cfg );
echo "
"; ?> EOF
$ open -a Safari "http://localhost/~user/db.inc.php" {{ :wip:yaml_parse_file-test.png?600 | yaml_parse_file-Test }} ==== System Integrity Protection reaktivieren ==== Reboot cmd + R Dienstprogramme -> Terminal $ csrutil enable $ reboot **Fertig!**