From ed649993cad6e1c379868e1657557f77c7fca1a4 Mon Sep 17 00:00:00 2001
From: Patrick Kivits
Date: Wed, 27 Jan 2021 08:24:44 +0100
Subject: [PATCH] Add PHP Decimal extension support
---
DOCUMENTATION/content/documentation/index.md | 14 ++++++++++++++
docker-compose.yml | 2 ++
env-example | 2 ++
php-fpm/Dockerfile | 15 +++++++++++++++
workspace/Dockerfile | 18 ++++++++++++++++++
5 files changed, 51 insertions(+)
diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md
index b31ce45..8fb2950 100644
--- a/DOCUMENTATION/content/documentation/index.md
+++ b/DOCUMENTATION/content/documentation/index.md
@@ -2291,6 +2291,20 @@ AST exposes the abstract syntax tree generated by PHP 7+. This extension is requ
**Note** If you need a specific version of AST then search for the `WORKSPACE_AST_VERSION` argument under the Workspace Container and set it to the desired version and continue step 4.
+
+
+## Install PHP Decimal extension
+The PHP Decimal extension adds support for correctly-rounded, arbitrary-precision decimal floating point arithmetic. Applications that rely on accurate numbers (ie. money, measurements, or mathematics) can use Decimal instead of float or string to represent numerical values.
+
+For more information visit the [PHP Decimal website](https://php-decimal.io).
+
+2 - Search for the `WORKSPACE_INSTALL_PHPDECIMAL` argument under the Workspace Container
+
+2 - Search for the `PHP_FPM_INSTALL_PHPDECIMAL` argument under the PHP-FPM container
+
+3 - Set it to `true`
+
+4 - Re-build the container `docker-compose build workspace php-fpm`
diff --git a/docker-compose.yml b/docker-compose.yml
index 37b597d..c9a7963 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -163,6 +163,7 @@ services:
- INSTALL_GNU_PARALLEL=${WORKSPACE_INSTALL_GNU_PARALLEL}
- INSTALL_LNAV=${WORKSPACE_INSTALL_LNAV}
- INSTALL_PROTOC=${WORKSPACE_INSTALL_PROTOC}
+ - INSTALL_PHPDECIMAL=${WORKSPACE_INSTALL_PHPDECIMAL}
- PROTOC_VERSION=${WORKSPACE_PROTOC_VERSION}
- INSTALL_DOCKER_CLIENT=${WORKSPACE_INSTALL_DOCKER_CLIENT}
- http_proxy
@@ -258,6 +259,7 @@ services:
- INSTALL_WKHTMLTOPDF=${PHP_FPM_INSTALL_WKHTMLTOPDF}
- INSTALL_XHPROF=${PHP_FPM_INSTALL_XHPROF}
- INSTALL_XMLRPC=${PHP_FPM_INSTALL_XMLRPC}
+ - INSTALL_PHPDECIMAL=${PHP_FPM_INSTALL_PHPDECIMAL}
- DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL=${PHP_DOWNGRADE_OPENSSL_TLS_AND_SECLEVEL}
- PUID=${PHP_FPM_PUID}
- PGID=${PHP_FPM_PGID}
diff --git a/env-example b/env-example
index cf64e75..6888b57 100644
--- a/env-example
+++ b/env-example
@@ -195,6 +195,7 @@ WORKSPACE_INSTALL_GIT_PROMPT=false
WORKSPACE_INSTALL_DOCKER_CLIENT=false
WORKSPACE_INSTALL_LNAV=false
WORKSPACE_INSTALL_PROTOC=false
+WORKSPACE_INSTALL_PHPDECIMAL=false
WORKSPACE_PROTOC_VERSION=latest
### PHP_FPM ###############################################
@@ -252,6 +253,7 @@ PHP_FPM_INSTALL_PING=false
PHP_FPM_INSTALL_SSHPASS=false
PHP_FPM_INSTALL_MAILPARSE=false
PHP_FPM_INSTALL_WKHTMLTOPDF=false
+PHP_FPM_INSTALL_PHPDECIMAL=false
PHP_FPM_FFMPEG=false
PHP_FPM_AUDIOWAVEFORM=false
PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8"
diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile
index a1e7051..86215b1 100644
--- a/php-fpm/Dockerfile
+++ b/php-fpm/Dockerfile
@@ -977,6 +977,21 @@ RUN if [ ${INSTALL_XMLRPC} = true ]; then \
docker-php-ext-install xmlrpc \
;fi
+###########################################################################
+# PHP DECIMAL:
+###########################################################################
+
+USER root
+
+ARG INSTALL_PHPDECIMAL=false
+
+RUN if [ ${INSTALL_PHPDECIMAL} = true ]; then \
+ apt-get update -yqq \
+ && apt-get install -y libmpdec-dev \
+ && pecl install decimal \
+ && docker-php-ext-enable decimal \
+;fi
+
###########################################################################
# New Relic for PHP:
###########################################################################
diff --git a/workspace/Dockerfile b/workspace/Dockerfile
index c6c5105..ffad2d9 100644
--- a/workspace/Dockerfile
+++ b/workspace/Dockerfile
@@ -1601,6 +1601,24 @@ RUN if [ ${SHELL_OH_MY_ZSH} = true ]; then \
USER root
+
+###########################################################################
+# PHP DECIMAL:
+###########################################################################
+
+USER root
+
+ARG INSTALL_PHPDECIMAL=false
+
+RUN if [ ${INSTALL_PHPDECIMAL} = true ]; then \
+ apt-get update -yqq \
+ && apt-get install -y libmpdec-dev \
+ && pecl install decimal \
+ && echo "extension=decimal.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/decimal.ini \
+ && ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/decimal.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-decimal.ini \
+ && php -m | grep -q 'decimal' \
+;fi
+
#
#--------------------------------------------------------------------------
# Final Touch