PHP 5.3 & mySQL auf Mac OS X installieren

PHP im Apache aktivieren

PHP 5.2.6 wird standartmäßig mit OSX Leopard ausgeliefert. Damit der lokale Apache PHP nutzen kann muss dieses noch nachträglich in der /etc/apache2/httpd.conf aktiviert werden. Dies geschiet dadurch, dass man die # vor LoadModule php5_module libexec/apache2/libphp5.so wegnimmt. Nun noch die Konfigurationsdatei von PHP kopieren und den Apache Webserver neustarten.

sudo cp /etc/php.ini.default /etc/php.ini
sudo apachectl restart

MySQL installieren

Die Installation von MySQL gestaltet sich relativ einfach. Einfach unter http://dev.mysql.com/downloads/mysql/5.0.html#macosx-dmg das richtige Packet herunterladen, mounten, installieren und fast fertig. Ich habe mich für die x86_64 Variante entschieden, da mein Core2Dou ja ein „64bit“ Prozessor ist.

Nach der Installation dann noch einen Doppelklick auf MySQL.prefpane um MySQL dann später bequem aus den Systemeinstellungen starten zu können.

Um die MySQL Installation abzuschießen kopieren wir noch die Konfigurationsdatei nach /etc.

sudo cp /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf

Man kann sicherlich auch eine andere cnf wählen, aber da es sich nur um eine lokale Entwicklungsumgebung handelt, sollte die small Konfiguration ausreichen.

Nun ist MySQL installiert und bereit gestartet zu werden. Dies wir einfach über die Systemeinstellungen -> MySQL gemacht. Wer den MySQL Server automatisch starten möchte kann dies dort durch setzen des Harkens bei Autostart erledigen.

PHP 5.3 installieren

Nach der MySQL Installation kann man PHP 5.2.6 mit MySQL benutzen, wem das genügt der kann hier nun aufhören zu lesen und sich ans entwicken machen.

Vorbereitungen

Nun gut: Here we go, bleeding edge of PHP.
Zur Vorbereitung benötigen wir ein Leopard PHP Packet von entropy.ch und die Xcode Tools von Apple. Das aktuellste entropy.ch Packet, welches ich beim schreiben des Artikels gefunden habe, ist Version 5.2.5-6-beta. Wichtig sind für uns allerdings nur die Bibliotheken des Packetes.

sudo -s
cd /usr/local
curl -O http://www2.entropy.ch/download/php5-5.2.5-6-beta.tar.gz
tar -xzvf php5-*-beta.tar.gz

Nun laden wir uns einen Snapshot von PHP 5.3 herunter und entpacken dann auch diesen in /usr/local und wechseln in das Verzeichnis.

Compilen von PHP

Kommen wir nun zum Compilen von PHP. Als erstes benötigen wir ein Configure Command, welches wir der einfachheit halber aus dem Entropy.ch Packet übernehmen.

/usr/local/php5/bin/php -i | grep "Configure Command"

Nun müssen wir noch das richtige –prefix und –with-config-file-scan-dir setzen. (Achtung nicht die Pfade zu den Bibliotheken verändern!). Ein fertiges Configure Command könnte dann so aussehen:

CFLAGS="-arch x86_64 -I/usr/local/php5/include/" LDFLAGS="-L/usr/local/php5/include/" ./configure  \
'--prefix=/usr/local/php5.3' \
'--with-apxs2=/usr/sbin/apxs' \
'--with-config-file-scan-dir=/usr/local/php5.3/php.d' \
'--with-openssl=/usr' \
'--with-zlib=/usr' \
'--with-zlib-dir=/usr' \
'--with-gd' \
'--with-ldap' \
'--with-xmlrpc' \
'--enable-exif' \
'--enable-soap' \
'--enable-sqlite-utf8' \
'--enable-wddx' \
'--enable-ftp' \
'--enable-sockets' \
'--with-bz2=/usr' \
'--enable-zip' \
'--enable-pcntl' \
'--enable-shmop' \
'--enable-sysvsem' \
'--enable-sysvshm' \
'--enable-sysvmsg' \
'--enable-mbstring' \
'--enable-bcmath' \
'--enable-calendar' \
'--with-mhash=shared,/usr/local/php5' \
'--with-kerberos=/usr' \
'--with-libxml-dir=/usr/local/php5' \
'--with-xsl=/usr/local/php5' \
'--with-gettext=/usr/local/php5' \
'--with-curl=shared,/usr/local/php5' \
'--with-png-dir=/usr/local/php5' \
'--with-jpeg-dir=/usr/local/php5' \
'--enable-gd-native-ttf' \
'--with-freetype-dir=/usr/local/php5' \
'--with-mysql=mysqlnd' \
'--with-mysqli=mysqlnd' \
'--with-pdo-mysql=mysqlnd' \
'--with-pgsql=shared,/usr/local/php5' \
'--with-pdo-pgsql=shared,/usr/local/php5' \
'--with-mcrypt=shared,/usr/local/php5' \
'--with-iconv' \
'--without-pear'

Der -arch Parameter bei CFLAGS kann auch weggelassen werden, er deutet nur an für welche Architektur PHP compiled wird. Wer noch weitere Optionen für PHP aktivieren will, der kann sich mit

./configure --help

einen Überblick über die Optionen verschaffen.

Nachdem der Configure Command ohne Probleme durchgelaufen ist, kommt nun ein gepflegtes

make -j4

und wir holen uns erstmal einen Kaffe.

Post make

Nachdem make durchgelaufen ist müssen wir noch etwas an den dynamischen Links von PHP ausbesseren. Um sich die dynamischen Links anzeigen zu lassen kann otool verwendet werden.

# show dynamic links
otool -L libs/libphp5.so

# correct linking
install_name_tool -change /usr/lib/libxml2.2.dylib /usr/local/php5/lib/libxml2.2.dylib libs/libphp5.so
install_name_tool -change /usr/lib/libxslt.1.dylib /usr/local/php5/lib/libxslt.1.dylib libs/libphp5.so
install_name_tool -change /usr/lib/libexslt.0.dylib /usr/local/php5/lib/libexslt.0.dylib libs/libphp5.so

# backup der libphp5.so von leopard
mv /usr/libexec/apache2/libphp5.so /usr/libexec/apache2/libphp5.so.leopard

# Installation der neuen PHP version
make test
make install

# Kopieren des neuen Apache Modules in unser Standalone Packet
cp /usr/libexec/apache2/libphp5.so /usr/local/php5.3

Abschließende Konfiguration

So und fertig ist die Installation von PHP 5.3 unter Mac OS X. Einen letzter Feinschliff muss jedoch noch an der Installation durchgeführt werden. Dies aber nur schnell Stichpunkt artig.

cp php.ini-recommended /usr/local/php5.3/lib/php.ini
mkdir /usr/local/php5.3/php.d
cp /usr/local/php5/php.d/* /usr/local/php5.3/php.d
sed -e 's/php5/php5.3/g' -i "" /usr/local/php5.3/php.d/10-extension_dir.ini
sed -e 's/20060613/20071006/g' -i "" /usr/local/php5.3/php.d/10-extension_dir.ini
apachectl restart

Um PHP nach den eigenen Wünschen zu konfigurieren einfach die entsprechenden Werte in der /usr/local/php5.3/lib/php.ini ändern.

Quellen:

3 Comment

  1. Emanuel says:

    Danke für die ausführliche Beschreibung!
    Leider kommt es bei der kompilierung zu fehlern bei der verlinkung von iconv beim make ( http://bugs.php.net/bug.php?id=43189 ) muss ich wohl noch ein bisschen rumprobieren, die vorschläge von dort haben mir noch nicht wirklich geholfen….

    ein tip noch: # make -j2

    da du warscheinlich ein dualcore system hast, kannst du das make ein wenig beschleunigen indem du 2 threads gleichzeit erlaubst..

    grüße,

    emanuel

  2. Benjamin says:

    Hey Emanuel, danke für den Tipp bezuglich des make commands, ich werde es bei gelegenheit nochmal testen. Aus der Linux welt kenne ich nur die Faustregel Kerne x 2, Sprich -j4 wäre noch eine Option. Mal testen in wie weit es was bringt.

    Was mich aber noch interessieren würde wäre die Fehlermeldung die er die beim Compilen ausspuckt:

    Gruß
    Benjamin

Schreibe einen Kommentar