PHP 5.3 on Snow Leopard – Sean Coates
May 24, 2010
My old post on I’ve been meaning to post instructions on how to compile PHP for Snow This time, I took notes on how to reliably compile PHP and Apache from
compiling PHP for Mac OS 10.5 (Leopard) continues to top my most-viewed page
statistics. Sadly, that article is old and doesn’t apply very well to Snow
Leopard (10.6).
Leopard since last summer when I picked up the DVD, but hadn’t found the
time or opportunity to build PHP from a completely fresh start, until a few
weeks ago.
scratch on this system.
You’re on your own for the details of this one, but frankly, if you can’t
figure it out, you’ll find the next steps too difficult. Think of it as
a prerequisite.
Create a working directory. I use ~/src,
but you can use whatever you like.
$ mkdir ~/src
$ cd ~/src
Install
href="http://github.com/mxcl/homebrew">Homebrew. Homebrew is
a truly great software packager for OS X. Think Macports, but not as ugly;
Fink, but not as broken (and not as binary). Designed for Mac. It’s Ruby,
but we don’t have to hold that against them. (-:
$ curl http://gist.github.com/raw/323731/572b315c4f7ee78244de70e7ad703c8ae324da7a/install_homebrew.rb > install_homebrew.rb
$ ruby install_homebrew.rb
Install your own iconv. I don’t know what Apple did to
theirs, but it’s a huge headache. You’re best installing your own, in my
experience.
$ curl http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz | tar -zx -
$ cd libiconv-1.13.1
$ ./configure --prefix=/opt && make && make install
$ cd ..
Install Apache-HTTPD from source. This isn’t
absolutely necessary, but Apple seems to have done some weird stuff with
their Apache, and in my experience, it’s best to build your own. If you
skip over this step, you’ll need to change the apxs in the
PHP configure command, below.
First, find your
closest mirror.
$ curl http://apache.mirror.iweb.ca/httpd/httpd-2.2.15.tar.bz2 | tar -jxf -
$ cd httpd-2.2.15/
$ ./configure --enable-rewrite --enable-ssl && make && make install
$ cd ..
Install PHP dependencies using Homebrew. Easy, huh?
$ echo "gd jpeg libpng libxml2 libzzip mcrypt mysql" | xargs brew install
$ echo "libpng libxml2 readline" | xargs brew link
Install PHP from source by first selecting a href="http://php.net/get/php-5.3.2.tar.bz2/from/a/mirror">mirror.
Note: you will need to use a really nasty patch to get this to
build properly. See the note on iconv above. Even Apple’s own
href="http://opensource.apple.com/source/apache_mod_php/apache_mod_php-53/patches/iconv.patch">iconv patch for PHP
doesn’t work (at least not for me).
$ curl -L http://ca2.php.net/get/php-5.3.2.tar.bz2/from/this/mirror | tar -jxf -
$ cd php-5.3.2
$ curl http://www.php.net/~scoates/patches/php-5.3.1-Makefile.global-iconv.patch | patch -p0
$ ./configure --prefix=/usr/local --with-xsl --with-gd --with-zlib-dir \
--enable-sockets --enable-exif --with-mcrypt --enable-soap \
--enable-embedded-mysqli --with-mysql --with-pdo-mysql --with-curl \
--with-libedit --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring \
--with-openssl --with-iconv=/opt && make && make install
$ cd ..
Configure Apache. If you’ve done this on other
platforms, this step should look familiar.
- In
/usr/local/apache2/conf/httpd.conf, in the
<IfModule mime_module>block, add the following:AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps - Optionally, add PHP to
DirectoryIndexby changingDirectoryIndex index.htmlto
DirectoryIndex index.php index.html
You can now test Apache + PHP by creating a phpinfo() page,
and restarting Apache:
$ echo "<?php phpinfo(); ?>" > /usr/local/apache/htdocs/info.php
$ ln -s /usr/local/apache2/bin/apachectl /usr/local/bin/apachectl
$ sudo /usr/local/bin/apachectl restart
Now, visit localhost/info.php,
and you should have an independent, custom-compiled Apache-PHP
stack.
I hope this has been helpful. If I’ve given bad instructions, or if
something doesn’t work for some reason, please let me know in the
comments.

