Dieser Artikel bezieht sich auf OS X El Capitan 10.11.6 bzw. macOS Sierra 10.12 mit Server 5.2 und ist ein Update zu meinem Artikel zum selben Thema, den ich schon einmal für OS X Yosemite geschrieben hatte. Seitdem hat Apple mit El Capitan ein neues Sicherheits-Feature namens System Integrity Protection (SIP) eingeführt, das den Zugriff selbst für root auf Systemverzeichnisse einschränkt und die Installation von (Webserver-) Erweiterungen stärker reglementiert als bisher. Daher macht eine überarbeitete Dokumentation zur Vorgehensweise Sinn.
Die PHP-Installation von macOS Sierra bzw. Server 5.2 kommt in Version 5.5.24 daher und ist wie üblich recht umfangreich. Die gettext-Erweiterung gehört jedoch nach wie vor nicht zum Lieferumfang. So wird sie installiert und als PHP-Erweiterung zum Webserver hinzugefügt:
Es ist hierfür nicht erforderlich, die System Integrity Protection von El Capitan bzw. macOS Sierra auszuschalten!
- Aktuelle Version der Xcode Command Line Tools installieren, denn diese bringt u.a. die PHP-Quelldateien mit, die zum Erstellen der gettext-Erweiterung erforderlich sind. Im Terminal xcode-select –install eingeben.
- Aktuelle gettext-Version herunterladen (siehe http://ftp.gnu.org/pub/gnu/gettext/ – aktuelle Version im Oktober 2016: 0.19.8) – dafür habe ich den Ordner /SourceCache angelegt – und entpacken.
- Ins gettext-Verzeichnis wechseln und ./Configure, make und sudo make install durchführen.
- Von OS X verwendete PHP-Version von http://php.net/releases/ herunterladen und entpacken; hier: PHP 5.6.24
- Im entpackten PHP-Ordner zu ext/gettext wechseln und dort die Befehle phpize, ./Configure, make und sudo make install eingeben (nacheinander, wenn der jeweils vorhergehende Prozess abgeschlossen ist).
An dieser Stelle wirft der Installationsprozess eine Fehlermeldung aus, denn er möchte die Erweiterung eigentlich in /usr/libexec/php/extensions ablegen, worauf er aber durch SIP keinen Zugriff mehr hat. Die Erweiterung wird aber trotzdem erstellt und vom Installer im PHP-Verzeichnis in ext/gettext/modules abgelegt. Dort können wir sie uns gleich holen. - Wir legen den Extension-Ordner einfach in /usr/local an, z.B. mit mkdir -p /usr/local/macoperator/lib/php/extensions
- Die frischgebackene Extension gettext.so von /SourceCache/php-5.6.24/ext/gettext/modules in /usr/local/macoperator/lib/php/extensions kopieren.
- Diesen Ordner muss man noch in der /etc/php.ini referenzieren. Dazu folgende Zeilen am Ende der Datei hinzufügen:
extension_dir = "/usr/local/macoperator/lib/php/extensions" [gettext] extension=gettext.so
- Apache mit sudo apachectl graceful bzw. durch Aus- und Einschalten des Web-Dienstes in der Server-App neu starten und fertig.