# How do I compile additional PHP extensions?

**URL:** <https://community.localwp.com/t/how-do-i-compile-additional-php-extensions/2272>\
**Category:** Local Classic FAQs\
**Tags:** php-extensions\
**Created:** [July 18, 2017, 3:08pm UTC](https://community.localwp.com/t/how-do-i-compile-additional-php-extensions/2272 "2017-07-18T15:08:47Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![clay](https://sea1.discourse-cdn.com/flex019/user_avatar/community.localwp.com/clay/32/8248_2.png) [@clay](https://community.localwp.com/u/clay)\
**Post date:** [July 18, 2017, 3:08pm UTC](https://community.localwp.com/t/how-do-i-compile-additional-php-extensions/2272/1 "2017-07-18T15:08:47Z")

</div>

You can use this guide to compile most PECL extensions in Local. **We’ll use SSH2 as the example here.**

* * *

### Download and extract the appropriate PECL extension

1. Download the appropriate version here: [https://pecl.php.net/package/ssh2](https://pecl.php.net/package/ssh2) (if you’re using PHP 7+, you need SSH2 1.0+)

2. Extract the archive into the site’s `/app` directory.

### Install Dependencies

_Required for pretty much all PHP extensions that you’ll compile. Once you do this once, you don’t need to do it for subsequent PHP extensions for this site._

1. Right-click on the site in the site sidebar and go to “Open Site SSH”
2. Enter `apt-get update`
3. Enter `apt-get install -y build-essential autoconf pkg-config` to install dependencies like `make`, `gcc` compiler, `autoconf`, etc.

### Install Extension Dependencies

_Depends on the extension you’re compiling. Sometimes there won’t be any dependencies to install prior to compiling._

Enter `apt-get install -y libssh2-1-dev` to install `libssh2`

If you’re stuck on what extensions you need, look in the errors when running step #3 in the next section and then Google the errors or Google what dependencies XXX PHP extension needs.

### Compile the extension using `phpize`

For info about compiling extensions with `phpize`, check out [http://php.net/manual/en/install.pecl.phpize.php](http://php.net/manual/en/install.pecl.phpize.php)

1. Enter `cd /app/ssh*/ssh*`
2. Enter `/opt/php/7.1.7/bin/phpize`
  - Use `find / -name phpize` to find the location of phpize if you can’t find it

3. Enter `./configure --with-php-config=/opt/php/7.1.7/bin/php-config`
  - Use `find / -name php-config` to find `php-config`

4. Enter `make`
5. Enter `make install`. You should see something like `Installing shared extensions: /opt/php/7.1.7/lib/php/extensions/no-debug-non-zts-20160303/`
6. Run `ls -la PATHFROMABOVE` to see what the new extension filename is. It’ll be something like `ssh2.so`

### Configure PHP to use the extension

1. Enter `nano /conf/php/7.1.7/php.ini` … Press Ctrl + W then Ctrl + V to go to the bottom of the file
2. Add a new section that looks something like

```auto
[ssh2]
extension=/opt/php/7.1.7/lib/php/extensions/no-debug-non-zts-20160303/ssh2.so

```

**Note:** Depending on the extension, you may need to use `pecl_extension=` or `zend_extension=` instead of `extension=`

### Restart PHP and Verify

1. Go back to Local and right-click on the site and go to “Restart”
2. After the site restarts, click on the `i` beside the PHP version to open `phpinfo()`. Search for `SSH2` or whatever extension you installed. Chances are, if you see it, it’s working correctly 😃

### Clean up

Remove the extension source directory in the site’s `/app` folder
