PHP 5.3.1 compiled from source on 10.6.2 Server
Apple unfortunately forgot to include freetype support in GD with their stock version of PHP 5.3.0 in 10.6 Server at least up to 10.6.2.
So, there’s some info online about compiling freetype into GD in 10.6, but it doesn’t specifically address 10.6 Server, and it references downloading the PHP 5.3.0 source from Apple’s servers, rather than directly from php.net.
So, here’s the info.
- Create a directory for the src.
sudo mkdir /src - Chown that over to yourself.
sudo chown username /src - Change into that directory.
cd /src - Create pcre directory.
mkdir pcre - Change into pcre directory.
cd pcre - Download pcre source.
curl ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.01.tar.gz -O - Download php5.3.1 source.
curl http://us3.php.net/distributions/php-5.3.1.tar.gz -O - Download libjpeg-v7 source.
curl http://www.ijg.org/files/jpegsrc.v7.tar.gz -O - Untar all of the above.
find *.tar.gz -exec tar xfvz {} \; - Change into pcre source directory.
cd pcre-8.01 - configure pcre.
./configure --disable-shared --enable-static - Make, and install pcre.
make && make install DESTDIR=/src/pcre/pcre-local - Change into the jpeg directory.
cd ../../jpeg-7 - Copy some config files into the current directory.
cp /usr/share/libtool/config/config.sub .; cp /usr/share/libtool/config/config.guess . - Config libjpeg.
export MACOSX_DEPLOYMENT_TARGET=10.6
CFLAGS="-arch x86_64" \
CXXFLAGS="-arch x86_64" \
LDFLAGS="-arch x86_64" \
./configure --enable-shared - Make, and Make install.
make; sudo make install - Change directory into PHP source folder.
cd ../php-5.3.1 - Modify line 186 of ./ext/iconv/iconv.c and change #define iconv libiconv to #define iconv iconv
- Configure PHP.
MACOSX_DEPLOYMENT_TARGET=10.6
CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp"
CCFLAGS="-arch x86_64 -g -Os -pipe"
CXXFLAGS="-arch x86_64 -g -Os -pipe"
LDFLAGS="-arch x86_64 -bind_at_load"
export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET
./configure --prefix=/usr \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--disable-dependency-tracking \
--sysconfdir=/private/etc \
--with-apxs2=/usr/sbin/apxs \
--enable-cli \
--with-config-file-path=/etc \
--with-libxml-dir=/usr \
--with-openssl=/usr \
--with-kerberos=/usr \
--with-zlib=/usr \
--enable-bcmath \
--with-bz2=/usr \
--enable-calendar \
--with-curl=/usr \
--enable-exif \
--enable-ftp \
--with-gd \
--with-jpeg-dir=/usr/local/lib \
--with-png-dir=/usr/X11R6 \
--with-freetype-dir=/usr/X11R6 \
--with-xpm-dir=/usr/X11R6 \
--with-ldap=/usr \
--with-ldap-sasl=/usr \
--enable-mbstring \
--enable-mbregex \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysql-sock=/var/mysql/mysql.sock \
--with-iodbc=/usr \
--enable-shmop \
--with-snmp=/usr \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--with-xmlrpc \
--with-iconv-dir=/usr \
--with-xsl=/usr \
--with-pcre-regex=/src/pcre/pcre-local/usr/local - Make PHP.
export EXTRA_CFLAGS="-lresolv"; make - Backup your php.ini
sudo cp /private/etc/php.ini /private/etc/php.ini.bak - Install new PHP
sudo make install - Restore php.ini, and restart apache.
sudo cp /private/etc/php.ini.bak /private/etc/php.ini; sudo apachectl graceful
All and all, on a new mac mini server, this took about 20-30 minutes. And I now have a working PHP 5.3.1 install, and freetype now works with GD (allowing me to put the captcha back on my contact form under “About”. Good luck!
Reference Links:
Interesting.
Did you check to see which pcre version php is using after this effort? I followed your instructions and found this:
$ php -i | grep PCRE
PCRE (Perl Compatible Regular Expressions) Support => enabled
PCRE Library Version => 7.8 2008-09-05
which seems not to be the version downloaded and compiled in is exercise.
You are right! Hmmm… wonder why.
Well, it definitely get’s my captcha image working, but PHPMyAdmin gives this error:
Your PHP MySQL library version mysqlnd 5.0.5-dev – 081106 – $Revision: 289630 $ differs from your MySQL server version 5.0.82. This may cause unpredictable behavior.
I’m not seeing this error with phpMyAdmin (running 3.2.0), though I am seeing those versions of mysqlnd and mysql server, but I am seeing an mcrypt error. I’ll see if I can re-visit my compilation technique and see what exactly is going on. Probably have to make some changes…
Here’s an easy way to add mcrypt. Tested with 10.6 Server: http://michaelgracie.com/2009/09/23/plugging-mcrypt-into-php-on-mac-os-x-snow-leopard-10.6.1/