diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index bb7896ab..0e576f58 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -40,5 +40,8 @@ body:
- type: textarea
attributes:
label: Minimal Dockerfile
- description: Please provide the relevant parts of your Dockerfile to reproduce the issue
+ description: |
+ Please provide the relevant parts of your Dockerfile to reproduce the issue.
+ Please don't post your whole Dockerfile: it'll take more time from the maintainers to check what's going wrong.
+ And it's time you won't pay for.
render: Dockerfile
diff --git a/README.md b/README.md
index 842d25af..cc090e27 100644
--- a/README.md
+++ b/README.md
@@ -208,7 +208,7 @@ install-php-extensions @fix_letsencrypt
| ast | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| bcmath | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| bitset | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
-| blackfire | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
+| blackfire | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| bz2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| calendar | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| cassandra[*](#special-requirements-for-cassandra) | | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
@@ -225,6 +225,7 @@ install-php-extensions @fix_letsencrypt
| excimer | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| exif | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ffi | | | | | | | ✓ | ✓ | ✓ | ✓ | ✓ |
+| ftp | | | | | | | | | | ✓ | ✓ |
| gd | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| gearman | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | |
| geoip | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | |
@@ -306,9 +307,9 @@ install-php-extensions @fix_letsencrypt
| soap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| sockets | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| sodium[*](#special-requirements-for-sodium) | | ✓ | ✓ | ✓ | | | | | | | |
-| solr | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
+| solr | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| sourceguardian | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
-| spx | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
+| spx | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| sqlsrv[*](#special-requirements-for-sqlsrv) | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ssh2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| stomp | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ |
@@ -319,7 +320,7 @@ install-php-extensions @fix_letsencrypt
| sysvsem | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| sysvshm | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| tensor | | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
-| tideways | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
+| tideways | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| tidy | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| timezonedb | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| uopz | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
@@ -345,7 +346,7 @@ install-php-extensions @fix_letsencrypt
| zookeeper | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| zstd | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
-*Number of supported extensions: 142*
+*Number of supported extensions: 143*
PS: the pre-installed PHP extensions are excluded from this list.
diff --git a/data/supported-extensions b/data/supported-extensions
index 5c268c70..880434b7 100644
--- a/data/supported-extensions
+++ b/data/supported-extensions
@@ -4,7 +4,7 @@ apcu_bc 7.0 7.1 7.2 7.3 7.4
ast 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
bcmath 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
bitset 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
-blackfire 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2
+blackfire 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
bz2 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
calendar 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
cassandra 7.2 7.3 7.4 8.0 8.1 8.2 8.3
@@ -21,6 +21,7 @@ event 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
excimer 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
exif 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
ffi 7.4 8.0 8.1 8.2 8.3
+ftp 8.2 8.3
gd 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
gearman 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0
geoip 5.5 5.6 7.0 7.1 7.2 7.3 7.4
@@ -102,9 +103,9 @@ snuffleupagus 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
soap 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
sockets 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
sodium 5.6 7.0 7.1
-solr 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2
+solr 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
sourceguardian 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2
-spx 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2
+spx 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
sqlsrv 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
ssh2 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
stomp 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.2 8.3
@@ -115,7 +116,7 @@ sysvmsg 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
sysvsem 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
sysvshm 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
tensor 7.2 7.3 7.4 8.0 8.1 8.2
-tideways 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2
+tideways 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
tidy 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
timezonedb 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
uopz 5.5 5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3
diff --git a/install-php-extensions b/install-php-extensions
index eca7df2f..02a40cc5 100755
--- a/install-php-extensions
+++ b/install-php-extensions
@@ -357,74 +357,80 @@ getModuleSourceCodePath() {
fi
}
-# Get the wanted PHP module version, resolving it if it starts with '^'
+# Get the actual PHP module version, resolving it if it starts with '^'
#
# Arguments:
-# $1: the name of the module to be normalized
+# $1: the name of the module
+# $2: the wanted version (optional, if omitted we'll use getWantedPHPModuleVersion)
#
# Output:
# The version to be used
-resolveWantedPHPModuleVersion() {
- resolveWantedPHPModuleVersion_raw="$(getWantedPHPModuleVersion "$1")"
- resolveWantedPHPModuleVersion_afterCaret="${resolveWantedPHPModuleVersion_raw#^}"
- if test "$resolveWantedPHPModuleVersion_raw" = "$resolveWantedPHPModuleVersion_afterCaret"; then
- printf '%s' "$resolveWantedPHPModuleVersion_raw"
+resolvePHPModuleVersion() {
+ resolvePHPModuleVersion_module="$1"
+ if test $# -lt 2; then
+ resolvePHPModuleVersion_raw="$(getWantedPHPModuleVersion "$installRemoteModule_module")"
+ else
+ resolvePHPModuleVersion_raw="$2"
+ fi
+ resolvePHPModuleVersion_afterCaret="${resolvePHPModuleVersion_raw#^}"
+ if test "$resolvePHPModuleVersion_raw" = "$resolvePHPModuleVersion_afterCaret"; then
+ printf '%s' "$resolvePHPModuleVersion_raw"
return
fi
- case "$resolveWantedPHPModuleVersion_afterCaret" in
+ case "$resolvePHPModuleVersion_afterCaret" in
?*@snapshot | ?*@devel | ?*@alpha | ?*@beta | ?*@stable)
- resolveWantedPHPModuleVersion_wantedStability="${resolveWantedPHPModuleVersion_afterCaret##*@}"
- resolveWantedPHPModuleVersion_wantedVersion="${resolveWantedPHPModuleVersion_afterCaret%@*}"
+ resolvePHPModuleVersion_wantedStability="${resolvePHPModuleVersion_afterCaret##*@}"
+ resolvePHPModuleVersion_wantedVersion="${resolvePHPModuleVersion_afterCaret%@*}"
;;
*)
- resolveWantedPHPModuleVersion_wantedStability=''
- resolveWantedPHPModuleVersion_wantedVersion="$resolveWantedPHPModuleVersion_afterCaret"
+ resolvePHPModuleVersion_wantedStability=''
+ resolvePHPModuleVersion_wantedVersion="$resolvePHPModuleVersion_afterCaret"
;;
esac
- resolveWantedPHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$1/allreleases.xml")"
+ resolvePHPModuleVersion_xml="$(curl -sSLf "http://pecl.php.net/rest/r/$resolvePHPModuleVersion_module/allreleases.xml")"
# remove line endings, collapse spaces
- resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
+ resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_xml" | tr -s ' \t\r\n' ' ')"
# one line per release (eg 1.2.3stable)
- resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | sed -r 's#$resolveWantedPHPModuleVersion_wantedStability")"
+ resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | grep "$resolvePHPModuleVersion_wantedStability")"
fi
# remove everything's up to '' (included)
- resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | sed 's#^.*##')"
+ resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | sed 's#^.*##')"
# keep just the versions
- resolveWantedPHPModuleVersion_versions="$(printf '%s' "$resolveWantedPHPModuleVersion_versions" | cut -d'<' -f1)"
+ resolvePHPModuleVersion_versions="$(printf '%s' "$resolvePHPModuleVersion_versions" | cut -d'<' -f1)"
resetIFS
- for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
- resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_wantedVersion}"
- if test "$resolveWantedPHPModuleVersion_version" != "${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_wantedVersion.}"; then
+ for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
+ resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
+ if test "$resolvePHPModuleVersion_version" != "${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion.}"; then
# Example: looking for 1.0, found 1.0.1
- printf '%s' "$resolveWantedPHPModuleVersion_version"
+ printf '%s' "$resolvePHPModuleVersion_version"
return
fi
done
- for resolveWantedPHPModuleVersion_version in $resolveWantedPHPModuleVersion_versions; do
- resolveWantedPHPModuleVersion_suffix="${resolveWantedPHPModuleVersion_version#$resolveWantedPHPModuleVersion_wantedVersion}"
- if test "$resolveWantedPHPModuleVersion_version" = "$resolveWantedPHPModuleVersion_suffix"; then
+ for resolvePHPModuleVersion_version in $resolvePHPModuleVersion_versions; do
+ resolvePHPModuleVersion_suffix="${resolvePHPModuleVersion_version#$resolvePHPModuleVersion_wantedVersion}"
+ if test "$resolvePHPModuleVersion_version" = "$resolvePHPModuleVersion_suffix"; then
continue
fi
- if test -z "$resolveWantedPHPModuleVersion_suffix"; then
+ if test -z "$resolvePHPModuleVersion_suffix"; then
# Example: looking for 1.0, found exactly it
- printf '%s' "$resolveWantedPHPModuleVersion_version"
+ printf '%s' "$resolvePHPModuleVersion_version"
return
fi
- case "$resolveWantedPHPModuleVersion_suffix" in
+ case "$resolvePHPModuleVersion_suffix" in
[0-9])
# Example: looking for 1.1, but this is 1.10
;;
*)
# Example: looking for 1.1, this is 1.1rc1
- printf '%s' "$resolveWantedPHPModuleVersion_version"
+ printf '%s' "$resolvePHPModuleVersion_version"
return
;;
esac
done
- printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$1" "$resolveWantedPHPModuleVersion_raw" "$resolveWantedPHPModuleVersion_versions" >&2
+ printf 'Unable to find a version of "%s" compatible with "%s"\nAvailable versions are:\n%s\n' "$resolvePHPModuleVersion_module" "$resolvePHPModuleVersion_raw" "$resolvePHPModuleVersion_versions" >&2
exit 1
}
@@ -811,6 +817,12 @@ buildRequiredPackageLists() {
ffi@debian)
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile libffi-dev"
;;
+ ftp@alpine)
+ buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
+ ;;
+ ftp@debian)
+ buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile $buildRequiredPackageLists_libssldev"
+ ;;
gd@alpine)
buildRequiredPackageLists_persistent="$buildRequiredPackageLists_persistent freetype libjpeg-turbo libpng libxpm"
buildRequiredPackageLists_volatile="$buildRequiredPackageLists_volatile freetype-dev libjpeg-turbo-dev libpng-dev libxpm-dev"
@@ -2401,6 +2413,9 @@ EOF
cd - >/dev/null
fi
;;
+ ftp)
+ docker-php-ext-configure ftp --with-openssl-dir=/usr
+ ;;
gd)
if test $PHP_MAJMIN_VERSION -le 506; then
docker-php-ext-configure gd --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir --enable-gd-native-ttf --with-vpx-dir
@@ -2623,7 +2638,7 @@ getPackageSource() {
installRemoteModule() {
installRemoteModule_module="$1"
printf '### INSTALLING REMOTE MODULE %s ###\n' "$installRemoteModule_module"
- installRemoteModule_version="$(resolveWantedPHPModuleVersion "$installRemoteModule_module")"
+ installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module")"
installRemoteModule_path="$(getModuleSourceCodePath "$installRemoteModule_module")"
rm -rf "$CONFIGURE_FILE"
installRemoteModule_manuallyInstalled=0
@@ -2716,7 +2731,7 @@ installRemoteModule() {
if test $(compareVersions "$(cmake --version | head -n1 | sed -E 's/^.* //')" '3.7') -lt 0; then
installRemoteModule_tmp=0.29.0
else
- installRemoteModule_tmp=0.30.3
+ installRemoteModule_tmp=0.31.0
fi
cd "$(getPackageSource https://github.com/commonmark/cmark/archive/$installRemoteModule_tmp.tar.gz)"
make -s -j$(getProcessorCount) cmake_build
@@ -3506,7 +3521,6 @@ installRemoteModule() {
fi
ldconfig || true
fi
- set -x
cd "$installRemoteModule_dir/Saxon.C.API"
exit
phpize
@@ -3572,8 +3586,10 @@ installRemoteModule() {
;;
solr)
if test -z "$installRemoteModule_version"; then
- if test $PHP_MAJMIN_VERSION -le 506; then
+ if test $PHP_MAJMIN_VERSION -lt 700; then
installRemoteModule_version=2.4.0
+ elif test $PHP_MAJMIN_VERSION -lt 704; then
+ installRemoteModule_version=2.6.0
fi
fi
;;
@@ -3584,7 +3600,7 @@ installRemoteModule() {
spx)
if test -z "$installRemoteModule_path"; then
if test -z "$installRemoteModule_version"; then
- installRemoteModule_version=v0.4.14
+ installRemoteModule_version=v0.4.15
fi
if test "${installRemoteModule_version%.*}" = "$installRemoteModule_version"; then
installRemoteModule_displayVersion="$installRemoteModule_version"
@@ -3652,6 +3668,9 @@ installRemoteModule() {
installRemoteModule_version=4.5.10
elif test $PHP_MAJMIN_VERSION -le 704; then
installRemoteModule_version=4.8.11
+ elif test $PHP_BITS -eq 32; then
+ # See https://github.com/swoole/swoole-src/issues/5198#issuecomment-1820162178
+ installRemoteModule_version="$(resolvePHPModuleVersion "$installRemoteModule_module" '^5.0')"
fi
else
installRemoteModule_version="$(resolvePeclStabilityVersion "$installRemoteModule_module" "$installRemoteModule_version")"
diff --git a/scripts/tests/ftp b/scripts/tests/ftp
new file mode 100755
index 00000000..4182e400
--- /dev/null
+++ b/scripts/tests/ftp
@@ -0,0 +1,15 @@
+#!/usr/bin/env php
+