My old post on 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).
I've been meaning to post instructions on how to compile PHP for Snow 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.
This time, I took notes on how to reliably compile PHP and Apache from scratch on this system.
-
Download and install Xcode. 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 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
apxsin the PHPconfigurecommand, 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 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 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 changing
toDirectoryIndex index.htmlDirectoryIndex 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 restartNow, visit localhost/info.php, and you should have an independent, custom-compiled Apache-PHP stack.
- In
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.
Belorussian translation provided by Patricia.