UPDATE: Please take a look at this. The below is pretty outdated at this point since Apple shipped PHP 5.3.4 with 10.6.8, and 10.7.0 shipped with 5.3.6. Their script is much spiffier than mine. Thanks!
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: