Ce référentiel contient un script qui peut être utilisé pour installer facilement une extension PHP dans les images officielles Docker PHP.
Le script installera tous les packages APT / APK requis; À la fin de l'exécution du script, les packages non plus nécessaires seront supprimés afin que l'image soit beaucoup plus petite.
Les images de docker prises en charge sont:
Voir également les notes dans la section des exigences spéciales.
Vous avez de nombreuses façons d'utiliser ce script dans votre Dockerfile
.
Voici une liste des exemples de Dockerfile
qui installent les extensions GD et XDebug PHP:
ADD
FROM php:7.2-cli
ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN install-php-extensions gd xdebug
curl
FROM php:7.2-cli
RUN curl -sSLf
-o /usr/local/bin/install-php-extensions
https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions &&
chmod +x /usr/local/bin/install-php-extensions &&
install-php-extensions gd xdebug
curl
FROM php:8.2-cli
RUN ( curl -sSLf https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions -o - || echo 'return 1' ) | sh -s
gd xdebug
FROM php:7.2-cli
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
RUN install-php-extensions gd xdebug
AVERTISSEMENT : En utilisant cette méthode, vous pouvez utiliser une version obsolète de l'image mlocati/php-extension-installer
. Vous voudrez peut-être exécuter docker pull mlocati/php-extension-installer
pour utiliser une version à jour.
RUN --mount=type=bind,from=mlocati/php-extension-installer:latest,source=/usr/bin/install-php-extensions,target=/usr/local/bin/install-php-extensions
install-php-extensions gd xdebug
AVERTISSEMENT : En utilisant cette méthode, vous pouvez utiliser une version obsolète de l'image mlocati/php-extension-installer
. Vous voudrez peut-être exécuter docker pull mlocati/php-extension-installer
pour utiliser une version à jour.
Ajoutez simplement -<version>
au nom du module. Par exemple:
install-php-extensions xdebug-2.9.7
Le script prend également en charge la résolution des versions compatibles en préfixant la version avec un caret ( ^
). Par exemple:
# Install the most recent xdebug 2.x version (for example 2.9.8)
install-php-extensions xdebug-^2
# Install the most recent xdebug 2.8.x version (for example 2.8.1)
install-php-extensions xdebug-^2.8
Veuillez remarquer qu'avec la syntaxe ci-dessus, vous obtiendrez la dernière version compatible, qui peut être instable. Afin d'installer la version stable la plus récente, vous pouvez ajouter @stable
:
# Install the most recent STABLE xdebug 3.x version (for example 3.2.2)
install-php-extensions xdebug-^3@stable
(Les suffixes valides sont: @snapshot
, @devel
, @alpha
, @beta
et @stable
)
Les versions de pré-libération des extensions disponibles sur PECL
peuvent être configurées en suffixant le nom de l'extension avec son état IE alpha
, beta
, rc
, preview
, devel
ou snapshot
. Par exemple:
install-php-extensions xdebug-beta
Astuce: lorsque la dernière version disponible sur PECL
n'est pas stable et que vous souhaitez conserver la dernière version stable, forcez-la en suffixant le nom de l'extension avec l'état stable
. Par exemple:
install-php-extensions mongodb-stable
Vous pouvez également installer des extensions PHP à partir du code source (à condition qu'il soit livré avec un package.xml
ou un fichier package2.xml
).
Les formats acceptés sont:
# Install from a specific commit (full commit SHA-1)
install-php-extensions php-memcached-dev/php-memcached@8f106564e6bb005ca6100b12ccc89000daafa9d8
# Install from a specific commit (short commit SHA-1)
install-php-extensions php-memcached-dev/php-memcached@8f106564e6bb
# Install from tag v3.2.0RC2
install-php-extensions php-memcached-dev/[email protected]
install-php-extensions php-memcached-dev/php-memcached@refs/tags/v3.2.0RC2
# Install from branch master
install-php-extensions php-memcached-dev/php-memcached@master
install-php-extensions php-memcached-dev/php-memcached@refs/heads/master
# tgz archive for commit 8f106564e6bb005ca6100b12ccc89000daafa9d8
install-php-extensions https://codeload.github.com/php-memcached-dev/php-memcached/tar.gz/8f106564e6bb005ca6100b12ccc89000daafa9d8
# tgz archive for tag v3.1.5
install-php-extensions https://codeload.github.com/php-memcached-dev/php-memcached/tar.gz/refs/tags/v3.1.5
# tgz archive for branch master
install-php-extensions https://codeload.github.com/php-memcached-dev/php-memcached/tar.gz/refs/heads/master
# Download the source code
curl -o /tmp/source.tgz https://codeload.github.com/php-memcached-dev/php-memcached/tar.gz/refs/tags/v3.1.5
tar xzf /tmp/source.tgz -C /tmp
install-php-extensions /tmp/php-memcached-3.1.5
Vous pouvez également installer Composer, et vous pouvez également en spécifier une version majeure ou une version complète.
Exemples:
# Install the latest version
install-php-extensions @composer
# Install the latest 1.x version
install-php-extensions @composer-1
# Install a specific version
install-php-extensions @composer-2.0.2
Le certificat Root CA de Let's Encrypt change (plus de détails ici).
Cela brise les vieilles distributions Linux, à savoir:
Ce script peut résoudre ce problème: passer simplement @fix_letsencrypt
comme argument:
install-php-extensions @fix_letsencrypt
Extension | PHP 8.4 | PHP 8.3 | PHP 8.2 | PHP 8.1 | PHP 8.0 | PHP 7.4 | PHP 7.3 | PHP 7.2 | PHP 7.1 | PHP 7.0 | PHP 5.6 | PHP 5.5 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
AMQP | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
APCU | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
APCU_BC | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
ast | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
bcmath | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
ensemble de bits | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
feu noir | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
brotli | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
bz2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
calendrier | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Cassandra * | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
cmark | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
CSV | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
dba | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
ddtrace * | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
décimal | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
ds | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
ecma_intl * | ✓ | ✓ | ||||||||||
enchanter | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
EV | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
événement | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
excimer | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
exif | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
FFI | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
FTP | ✓ | ✓ | ✓ | |||||||||
gd | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
homme de vitesses | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
geoip | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
geos * | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
géospatial | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
gettext | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
gmagick | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
GMP | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
gnupg | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
grpc | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
http | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
igbinar | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
imaginaire | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
iMap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
inotifier | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
interbase | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
intl | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
ion | ✓ | ✓ | ✓ | ✓ | ||||||||
ioncube_loader | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
jsmin | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
JSON_POST | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
jsonpath | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
ldap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Luasandbox | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
lz4 * | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
LZF | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
mensonction | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
maxminddb | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
Mcrypt | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
memcache | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
memcache | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
MEMPROF * | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
mongo | ✓ | ✓ | ||||||||||
mongodb | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
mousquitto | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
msgpack | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
MSSQL | ✓ | ✓ | ||||||||||
mysql | ✓ | ✓ | ||||||||||
mysqli | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
newrelic | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
notamment | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
OCI8 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
ODBC | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
opcache | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
opencensus | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
openswoole | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
OpenTelemetry | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
parallèle* | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
Parle * | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
pcntl | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
PCOV | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
PDO_DBLIB | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
PDO_FIREBIRD | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
PDO_MYSQL | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
PDO_OCI | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
PDO_ODBC | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
PDO_PGSQL | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
PDO_SQLSRV | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
pgsql | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
phalcon | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
php_trie | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
Phpy * | ✓ | ✓ | ✓ | ✓ | ||||||||
pkcs11 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
pq | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
propulser | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
protobuf | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
pspell | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
PSR | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
pthreads * | ✓ | ✓ | ✓ | |||||||||
raphf | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
rdkafka | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
recoder | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
redis | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
relais | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
saxon* | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
clignotant | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
odeur de mer | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
shmop | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
simdjson * | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
SMBClient | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
dynamique | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
snmp | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
snuffleupagus | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
savon | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
prises | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
sodium* | ✓ | ✓ | ✓ | |||||||||
Solr | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
SourceGuardian | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
SPX | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
SQLSRV * | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
ssh2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
piétiner | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
bêler | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
sybase_ct | ✓ | ✓ | ||||||||||
synchronisation | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
sysvmsg | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
sysvsem | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
sysvshm | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
tenseur | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
marelles | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
rangé | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Timezonedb | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
uopz | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
uploadProgress | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
uuid | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
UV | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
VIPS * | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
vld | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
wddx | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
wikidiff2 * | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
xdebug | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
xdiff | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
xhprof | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
XLSwriter | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
XMLDIFF | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
xmlrpc | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
xpass * | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
XSL | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
yac | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
yaml | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
yar | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
zéphir_parser | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
fermeture éclair | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
zmq | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
gardien de zoo | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
zstd | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Nombre d'extensions prises en charge: 151
PS: Les extensions de PHP préinstallées sont exclues de cette liste. Vous pouvez les répertorier avec la commande suivante (modifiez php:7.2-cli
pour refléter la version PHP qui vous intéresse):
$ docker run --rm php:7.2-cli php -m
[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
ftp
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
pdo_sqlite
Phar
posix
readline
Reflection
session
SimpleXML
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
[Zend Modules]
Vous pouvez configurer le comportement du script, ainsi que pour régler certaines extensions dans l'ordre adapté à vos besoins, en utilisant des variables d'environnement.
Voici un exemple:
IPE_LZF_BETTERCOMPRESSION=1 install-php-extensions lzf
Voici la liste de toutes les variables environnementales prises en charge:
Extension | Variable d'environnement | Description |
---|---|---|
IPE_DEBUG=1 | En définissant cette variable d'environnement, le script imprimera toutes les commandes qu'il exécute (elle sera très verbeuse, utile uniquement à des fins de débogage) | |
IPE_PROCESSOR_COUNT | Par défaut, tous les processeurs disponibles. Définissez cette variable d'environnement pour remplacer le nombre de processeurs détectés par le script (utilisé pour la compilation parallèle) | |
IPE_DONT_ENABLE=1 | Par défaut, le script installe et activera les extensions. Si vous souhaitez les installer uniquement (sans leur activer), vous pouvez définir cette variable d'environnement. Pour activer les extensions à un moment ultérieur, vous pouvez exécuter la commande docker-php-ext-enable-<extension> (par exemple: docker-php-ext-enable-xdebug ).Attention : l'installation de certaines extensions de PHP nécessite que d'autres extensions PHP soient déjà activées, alors utilisez cette fonction à bon escient. | |
IPE_SKIP_CHECK=1 | Par défaut, le script vérifiera si les extensions peuvent être activées: si vous souhaitez sauter ce chèque, vous pouvez utiliser ce drapeau. Attention : les extensions peuvent être activées même si elles cassent PHP: utilisez cette fonction à bon escient. | |
IPE_KEEP_SYSPKG_CACHE=1 | Par défaut, le script effacera le cache APT / APK / Pear afin d'économiser l'espace disque. Vous pouvez le désactiver en définissant cette variable d'environnement | |
LZF | IPE_LZF_BETTERCOMPRESSION=1 | Par défaut, install-php-extensions compile l'extension lzf pour préférer la vitesse à la taille; Vous pouvez utiliser cette variable d'environnement pour la compiler préférant la taille à la vitesse |
événement | IPE_EVENT_NAMESPACE= ... | Par défaut, les classes event sont définies dans l'espace de noms racine. Vous pouvez utiliser cette variable d'environnement pour spécifier un espace de noms personnalisé |
gd | IPE_GD_WITHOUTAVIF=1 | Depuis PHP 8.1, GD prend en charge le format AVIF. L'activer nécessite de compiler libaom / libdav1d / libyuv / libavif sur Debian jusqu'à 11 et alpine jusqu'à 3,14, ce qui prend du temps. Vous pouvez désactiver la prise en charge AVIF en définissant cette variable d'environnement sur les versions du système d'exploitation |
OCI8 & PDO_OCI | IPE_INSTANTCLIENT_BASIC=1 | Les extensions PHP OCI8 et PDO_OCI nécessitent un client instantané Oracle. Afin d'enregistrer l'espace disque, nous installons la version Lite Basic: si vous souhaitez installer la version de base (non-lite), définissez simplement cette variable d'environnement |
HTTP, INTL, MONGODB | IPE_ICU_EN_ONLY=1 | Certaines extensions nécessitent la bibliothèque des soins intensifs, utilisez ce drapeau pour installer une bibliothèque d'unires d'USI plus petites mais en anglais uniquement sur Alpine 3.16 et plus tard |
pspell | IPE_ASPELL_LANGUAGES='...' | Configurez les langues à mettre à disposition (par exemple: IPE_ASPELL_LANGUAGES='en fr' ). S'il est omis, nous supposerons en |
IPE_DEB_ARCHIVE & IPE_DEB_ARCHIVE_SECURITY | Les packages APT des versions Debian très anciennes (par exemple Jessie) peuvent avoir été archivées: vous pouvez utiliser ces variables d'environnement pour spécifier les URL personnalisées de ces archives APT | |
newrelic | IPE_NEWRELIC_DAEMON=1 | Installer le démon newrelic |
newrelic | IPE_NEWRELIC_KEEPLOG=1 | Gardez les fichiers journaux de la configuration de NewRelic ( /tmp/nrinstall-….tar ) |
newrelic | NR_INSTALL_KEY | Votre nouvelle clé de licence de relique |
Certaines extensions ont des exigences particulières:
Extension | Exigences |
---|---|
Cassandra | • Non disponible dans les images de jessie Docker• Non disponible dans les images stretch Docker• Non disponible dans les images de buster docker• Non disponible dans les images docker bullseye • Non disponible dans les images de docker bookworm |
ddtrace | Non disponible dans jessie Docker Images |
ecma_intl | • Non disponible dans les images de buster docker• Non disponible dans les images docker bullseye |
géos | • Non disponible dans alpine3.9 Docker Images• Non disponible dans alpine3.10 Docker Images |
lz4 | Non disponible dans jessie Docker Images |
memprof | • Non disponible dans alpine3.9 Docker Images• Non disponible dans alpine3.10 Docker Images• Non disponible dans alpine3.11 Docker Images• Non disponible dans alpine3.12 Docker Images• Non disponible dans alpine3.13 Docker Images• Non disponible dans alpine3.14 Docker Images• Non disponible dans alpine3.15 Docker Images |
parallèle | Nécessite des images avec PHP compilé avec une filetage activé ( zts ) |
percer | Non disponible dans jessie Docker Images |
phpy | Non disponible dans les images de buster docker |
pthreads | Nécessite des images avec PHP compilé avec une filetage activé ( zts ) |
saxon | Non disponible dans les images de Docker alpine |
simdjson | • Non disponible dans les images de jessie Docker• Non disponible dans les images stretch Docker |
sodium | Non disponible dans jessie Docker Images |
sqlsrv | • Non disponible en 7.1-alpine3.9 Docker Images• Non disponible en 7.1-alpine3.10 Docker Images |
vips | • Non disponible dans alpine3.9 Docker Images• Non disponible dans les images de jessie Docker |
wikidiff2 | • Non disponible dans les images de jessie Docker• Non disponible dans les images stretch Docker |
xpass | Non disponible dans les images de buster docker |
Vous pouvez exécuter cette commande:
cat /etc/os-release
Par exemple:
PRETTY_NAME= " Debian GNU/Linux 11 (bullseye) "
PRETTY_NAME= " Alpine Linux v3.14 "
Lors de la soumission d'une demande de traction, une action GitHub est exécutée pour vérifier si les extensions PHP affectées fonctionnent réellement (voir ci-dessous).
De plus, nous vérifions également que les nouvelles versions d'extensions dans le référentiel PECL fonctionneront toujours. Cela se fait sur une base planifiée avec une autre action GitHub.
En cas d'échec, un message est envoyé à un canal télégramme.
N'hésitez pas à vous abonner pour recevoir des notifications de défaillance.
Avant de soumettre une demande de traction, vous devez exécuter le script lint
dans le répertoire scripts
(ou lint.bat
sur Windows).
Si vous ne faites pas cela, et s'il y a une erreur de style de codage, vous verrez que le Check shell coding style
et / ou les actions de GHUB Check PHP coding style
.
L'erreur sera quelque chose comme ceci:
--- filename.orig
+++ filename
@@ -line number,7 +line number,7 @@
good line of code #1
good line of code #2
good line of code #3
- the original line with a wrong coding style
+ the line wrong coding style that has been corrected
good line of code #4
good line of code #5
good line of code #6
Vous devez donc corriger la ligne en surbrillance (celle du line number
) en remplaçant ce que vous voyez après le -
par ce que vous voyez après le +
install-php-extensions
data/supported-extensions
, en ajoutant une nouvelle ligne avec la poignée de l'extension et la liste des versions PHP prises en chargedata/special-requirements
, avec la poignée d'extension suivie d'un espace et zts
Voir cette demande de traction pour un exemple.
install-php-extensions
data/supported-extensions
, en ajoutant la nouvelle version PHP à la ligne existante correspondant à l'extension mise à jourVoir cette demande de traction pour un exemple.
Si vous modifiez un code qui affecte une ou plusieurs extensions, veuillez ajouter une ligne avec Test: extension1, extension2
au message de l'un des commits de demande de traction. De cette façon, les travaux de test vérifieront l'extension même si vous ne touchez pas le fichier data/supported-extensions
.
Voici un exemple de message de validation:
Improve the GD and ZIP extensions
Test: gd, zip
Les tests vérifient uniquement l'installation d'une seule extension PHP à la fois. Si vous souhaitez tester l'installation de plus d'extensions de PHP en même temps, utilisez un message de validation comme ceci:
Improve the GD and ZIP extensions
Test: gd+zip
Si votre demande de traction contient plusieurs engins, nous vérifierons le message "Test:" de chaque validation. Si vous souhaitez arrêter l'analyse des engins suivants, ajoutez -STOP-
dans la ligne "Test:", par exemple:
Improve the GD and ZIP extensions
Test: gd, zip, -STOP-
Voir cette demande de traction pour un exemple.
Les extensions PHP publiées sur l'archive PECL contiennent un fichier package.xml
(ou package2.xml
) décrivant les versions PHP prises en charge et les options qui peuvent être utilisées pour le compiler. Lorsque nous ajoutons la prise en charge d'une nouvelle extension PHP, et lorsqu'une nouvelle version d'une extension PHP est publiée, nous devons vérifier ces contraintes.
C'est une tâche plutôt fastidieuse, j'ai donc développé un projet qui vous permet de vérifier facilement ces contraintes: vous pouvez le trouver sur https://mlocati.github.io/pecl-info (ici vous pouvez trouver son code source).
Voir le fichier MAINTAINERS.md
.
Vous pouvez me proposer un café mensuel ou un café ponctuel