2018-04-12 07:25:43 +00:00
[![TravisCI Build Status ](https://travis-ci.org/mlocati/docker-php-extension-installer.svg?branch=master )](https://travis-ci.org/mlocati/docker-php-extension-installer)
2018-04-11 15:39:10 +00:00
# Easy installation of PHP extensions in official PHP Docker images
This repository contains a script that can be used to easily install a PHP extension inside the [official PHP Docker images ](https://hub.docker.com/_/php/ ).
2018-04-12 07:25:43 +00:00
2018-04-11 15:39:10 +00:00
## Known limits
Currently the script requires the Debian-based images (no Alpine).
## Usage
Here's a sample Dockerfile that installs the GD and xdedub extensions inside a docker image:
```
FROM php:7.2-cli
ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions /usr/local/bin/
2018-04-12 12:37:58 +00:00
RUN chmod uga+x /usr/local/bin/install-php-extensions & & sync & & \
2018-04-11 15:45:25 +00:00
install-php-extensions gd xdebug
2018-04-11 15:39:10 +00:00
```
2019-10-09 15:11:51 +00:00
Installation via COPY --from
```
FROM php:7.2-cli
2019-10-10 06:49:44 +00:00
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/bin/
2019-10-09 15:11:51 +00:00
RUN install-php-extensions gd xdebug
```
2018-06-28 07:46:14 +00:00
`install-php-extensions` will install all the required APT packages.
2019-05-17 07:13:23 +00:00
If you want to remove the APT development packages (which shouldn't be needed after the PHP extensions have been installed) and other no longer required packages, you can use the `--cleanup` option (**EXPERIMENTAL**):
2018-06-28 07:46:14 +00:00
```
2018-06-28 08:01:51 +00:00
install-php-extensions --cleanup gd xdebug
2018-06-28 07:46:14 +00:00
```
2018-04-11 15:39:10 +00:00
## Supported PHP extensions
<!-- START OF EXTENSIONS TABLE -->
<!-- ########################################################### -->
<!-- # # -->
<!-- # DO NOT EDIT THIS TABLE: IT IS GENERATED AUTOMATICALLY # -->
<!-- # # -->
<!-- # EDIT THE data/supported - extensions FILE INSTEAD # -->
<!-- # # -->
<!-- ########################################################### -->
2019-10-10 16:53:15 +00:00
| Extension | PHP 5.6 | PHP 7.0 | PHP 7.1 | PHP 7.2 | PHP 7.3 | PHP 7.4 |
|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| amqp | V | V | V | V | V | V |
| apcu | V | V | V | V | V | V |
| bcmath | V | V | V | V | V | V |
| bz2 | V | V | V | V | V | V |
| calendar | V | V | V | V | V | V |
| cmark | | V | V | V | V | V |
| dba | V | V | V | V | V | V |
| enchant | V | V | V | V | V | V |
| exif | V | V | V | V | V | V |
| gd | V | V | V | V | V | V |
| gettext | V | V | V | V | V | V |
| gmp | V | V | V | V | V | V |
| igbinary | V | V | V | V | V | V |
| imagick | V | V | V | V | V | V |
| imap | V | V | V | V | V | V |
| interbase | V | V | V | V | V | |
| intl | V | V | V | V | V | V |
| ldap | V | V | V | V | V | V |
| mcrypt | V | V | V | V | V | V |
| memcache | V | | | | | |
| memcached | V | V | V | V | V | V |
| mysql | V | | | | | |
| mysqli | V | V | V | V | V | V |
| odbc | V | V | V | V | V | V |
| opcache | V | V | V | V | V | V |
| pcntl | V | V | V | V | V | V |
| pcov | | V | V | V | V | V |
| pdo_dblib | V | V | V | V | V | V |
| pdo_firebird | V | V | V | V | V | V |
| pdo_mysql | V | V | V | V | V | V |
| pdo_odbc | V | V | V | V | V | V |
| pdo_pgsql | V | V | V | V | V | V |
| pdo_sqlsrv | | V | V | V | V | |
| pgsql | V | V | V | V | V | |
| pspell | V | V | V | V | V | |
| pthreads | V | V | | | | |
| recode | V | V | V | V | V | |
| redis | V | V | V | V | V | |
| shmop | V | V | V | V | V | |
| snmp | V | V | V | V | V | |
| soap | V | V | V | V | V | |
| sockets | V | V | V | V | V | |
| solr | V | V | V | V | V | |
| sqlsrv | | V | V | V | V | |
| ssh2 | V | V | V | V | V | |
| sybase_ct | V | | | | | |
| sysvmsg | V | V | V | V | V | |
| sysvsem | V | V | V | V | V | |
| sysvshm | V | V | V | V | V | |
| tidy | V | V | V | V | V | |
| timezonedb | V | V | V | V | V | |
| uopz | V | V | V | V | V | |
| uuid | V | V | V | V | V | |
| wddx | V | V | V | V | V | |
| xdebug | V | V | V | V | V | |
| xmlrpc | V | V | V | V | V | |
| xsl | V | V | V | V | V | |
| yaml | V | V | V | V | V | |
| zip | V | V | V | V | V | |
2018-04-11 15:39:10 +00:00
<!-- END OF EXTENSIONS TABLE -->
2018-04-12 07:50:14 +00:00
PS: the pre-installed PHP extensions are excluded from this list.
You can list them with the following command (change `php:7.2-cli` to reflect the PHP version you are interested in):
```sh
docker run --rm -it php:7.2-cli php -m
```
2018-04-11 15:39:10 +00:00
## Special requirements
Some extension has special requirements:
<!-- START OF SPECIAL REQUIREMENTS -->
<!-- ########################################################### -->
<!-- # # -->
<!-- # DO NOT EDIT THIS TABLE: IT IS GENERATED AUTOMATICALLY # -->
<!-- # # -->
<!-- # EDIT THE data/special - requirements FILE INSTEAD # -->
<!-- # # -->
<!-- ########################################################### -->
| Extension | Requirements |
|:---:|:---:|
| pthreads | Requires images with PHP compiled with thread-safety enabled (`zts`). |
<!-- END OF SPECIAL REQUIREMENTS -->
2018-04-12 09:58:21 +00:00
## How to contribute
- If you want to add support for a new PHP extension:
2019-05-17 07:13:23 +00:00
1. change the `install-php-extensions` script
2. update the `data/supported-extensions` file, adding a new line with the handle of the extension and the list of supported PHP versions
3. if the extension requires ZTS images:
add a new line to the `data/special-requirements` file, with the extension handle followed by a space and `zts`
- If you want to change the list of supported PHP versions for an already supported extension:
1. change the `install-php-extensions` script
2. update the `data/supported-extensions` file, adding the new PHP version to the existing line corresponding to the updated extension
2019-08-12 20:15:18 +00:00
- If you change some code that affects one or more extensions, please add a line with `Test: extension1, extension2` to the message of one of the pull request commits.
2019-08-12 19:56:24 +00:00
Here's an example of a commit message:
```
Improve the GD and ZIP extensions
Test: gd, zip
```