Pencarian

Rss Posts

 

 

 

PHP 5.3 on Snow Leopard – Sean Coates

May 24, 2010

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.

  1. Download and install href="http://developer.apple.com/technologies/xcode.html">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.

  2. Create a working directory. I use ~/src,
    but you can use whatever you like.

    
    $ mkdir ~/src
    $ cd ~/src
      

  3. 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
       

  4. 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 ..
      

  5. 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 ..
       

  6. 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
      

  7. 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 ..
      

  8. Configure Apache. If you’ve done this on other
    platforms, this step should look familiar.

    1. 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
          
    2. Optionally, add PHP to DirectoryIndex by changing
      
      DirectoryIndex index.html
          

      to

      
      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.

Comments are closed.