If you want to use SSH or SFTP with PHP you need the SSH2 extension. Unfortunately MAMP doesn't come with it out of the box. Moreover, it comes with no PHP sources making it a bit complicated to use pecl to install the extension. So here I document it, mostly for my future self and in the hope that I'll spare a poor soul the trouble. The middle part of the instructions is a prerequisite for installing any other PHP extension, so here's another utility to this.

OS X 10.11 El Capitan pre-requisites

Unfortunately OS X 10.11 El Capitan no longer includes the development headers for the OpenSSL library which are required to build libssh2. As a result, we have to install a copy of the library using Homebrew:

brew update
brew install openssl

This will install OpenSSL in the directory /usr/local/opt/openssl

Installing libssh2

First we need to install libssh2 which is a dependency to the PHP module. Download libssh2 from its page (direct link). In Terminal commands:

tar xvzf libssh2-1.4.3.tar.gz
cd libssh2-1.4.3
./configure --with-libssl-prefix=/usr/local/opt/openssl
sudo make install

Important note: the --with-libssl-prefix=/usr/local/opt/openssl part should only be used on Mac OS X El Capitan if you followed the instructions of the previous section for installing OpenSSL through Homebrew.

If you are missing autoconf you may try to install it using Homebrew:

brew install autoconf

Make it possible to use pecl with MAMP

You need to download the PHP sources matching your version, place them into the corresponding Applications/MAMP/bin/php/phpX.Y.Z/include.php directory and run ./configure against it to create the necessary headers. For example, for PHP 5.6.10:

cd /Applications/MAMP/bin/php/php5.6.10
wget -O php-5.6.10.tar.bz2
tar xjf php-5.6.10.tar.bz2
mv php-5.6.10 php
mkdir include
mv php include/
cd include/php

Install SSH2 through PECL and activate it

Now you can simply do

pecl install ssh2

When asked about libssh2 location just press ENTER.

As mentioned above, if you are told that you are missing autoconf you may try to install it using Homebrew:

brew install autoconf

and then retry the installation with PECL.

Now open MAMP Pro's main window and hit ⌘-4 or go to File > Edit Template > PHP 5.6.10. Find the Extensions section and add the line

Save the file, close the editor window and restart Apache. To confirm that everything is installed launch a phpinfo() page and loog for ssh2. It should be present.

For the CLI executable of PHP you also need to edit another file, /Applications/MAMP/bin/php/php5.6.10/conf/php.ini Again add the line

To confirm that everything is installed porperly for the CLI PHP binary do

php -i | grep ssh

you should get something like

Registered PHP Streams => https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip,, ssh2.exec, ssh2.tunnel, ssh2.scp, ssh2.sftp
libssh2 version => 1.4.3
banner => SSH-2.0-libssh2_1.4.3

That's it!