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 install openssl
This will install OpenSSL in the directory /usr/local/opt/openssl
tar xvzf libssh2-1.4.3.tar.gz
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:
wget http://de1.php.net/get/php-5.6.10.tar.bz2/from/this/mirror -O php-5.6.10.tar.bz2
tar xjf php-5.6.10.tar.bz2
mv php-5.6.10 php
mv php include/
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.shell, ssh2.exec, ssh2.tunnel, ssh2.scp, ssh2.sftp
libssh2 version => 1.4.3
banner => SSH-2.0-libssh2_1.4.3