Install PHP 7.0 (phpng) on Mac OS X

This guide will show how to install PHP 7.0 on on Mac OS X. This version of PHP is also known as PHPNG to indicate it is the “next generation” of PHP. Many fundamental improvements have been made – for example WordPress sites should see a 100% performance increase switching from PHP 5.6 to PHP 7.0.

Install Brew

To start you will need to install Brew so that we can use it to install additional dependencies. Open Terminal and at the prompt enter the following.

ruby -e "$(curl -fsSL"

Install Dependencies

Once Brew is installed, install the dependencies we’ll need using the following command. Make sure you have tapped homebrew/versions to access all dependencies (it won’t hurt to run it again if you’ve think you’ve tapped it, but aren’t sure).

brew tap homebrew/versions
brew install \
    autoconf \
    automake \
    bison27 \
    freetype \
    gd \
    gettext \
    git \
    mariadb \
    mcrypt \
    t1lib \

Build PHPNG From Source

Now we need to clone the PHP-7.0.0 branch of the PHP source and compile it using the built in scripts.

git clone -b PHP-7.0.0
cd php-src
./buildconf --force
env YACC=`brew --prefix bison27`/bin/bison ./configure \
    --prefix="/usr/local/opt/phpng" \
    --with-config-file-path="/usr/local/etc/phpng" \
    --enable-bcmath \
    --enable-calendar \
    --enable-exif \
    --enable-ftp \
    --enable-gd-native-ttf \
    --enable-gd-jis-conv \
    --enable-mbstring \
    --enable-pcntl \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-wddx \
    --enable-zip \
    --with-bz2 \
    --with-curl \
    --with-iconv \
    --with-freetype-dir=`brew --prefix freetype` \
    --with-gd \
    --with-gettext=`brew --prefix gettext` \
    --with-gmp \
    --with-jpeg-dir=`brew --prefix gd` \
    --with-mcrypt=`brew --prefix mcrypt` \
    --with-mysqli=`brew --prefix`/bin/mysql_config \
    --with-openssl \
    --with-pdo-mysql=`brew --prefix mariadb` \
    --with-png-dir=`brew --prefix gd` \
    --with-zlib=`brew --prefix zlib`
make -j`sysctl -n hw.logicalcpu_max`

Create Package Installer

Now create the package installer and complete the installation via the GUI.

env INSTALL_ROOT=$PWD/phpng-pkg make install
pkgbuild \
    --root phpng-pkg \
    --identifier net.php.phpng \
    --version 7.0.0-dev \
    --ownership recommended \
open phpng-dev.pkg


By default OS X will use the PHP binary located at /usr/bin/php, which as of this writing is PHP 5.5. To have PHPNG take precedence, will need to symlink to the /usr/local/bin directory. Run php -v to make sure you have the correct version, and if it’s not what you expected try which php to see the location that is being selected based on your $PATH.

ln -s /usr/local/opt/phpng/bin/php /usr/local/bin
php -v

PHP 7.0.0beta2 (cli) (built: Aug  3 2015 13:22:21) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies

You may also like...

5 Responses

  1. Moshe Bartov says:

    tried following instructions (thanks!)
    fixed the bison issue
    when running the env YACC=’brew..
    getting a
    configure: error: Unable to find your mysql installation
    was unable to find any info.
    tried running brew several time with brew update mysql and also remove and then install but nothing works..

    running locate mysql_config

    Working on OSX El Capitan

  2. Chris says:

    Any idea how this can be fixed?

    >>> make -j`sysctl -n hw.logicalcpu_max`
    make: *** No targets specified and no makefile found. Stop.

    • User Avatar Justin Silver says:

      That error usually means that make doesn’t see the makefile at all. Sometimes it gets a weird extension appended to it, when really it should just be called “makefile”. Check the directory to see if there is a file named makefile with an extension, and if so just remove the extension and try again.

  3. Tanvir says:

    Hi,I am getting error on “install dependencies”
    it says ‘”No available formula with the name “bison27″”

Leave a Reply

Your email address will not be published. Required fields are marked *