Skip to content

Commit d5ef6b4

Browse files
committed
Use phpize to install tgz extensions instead of pecl
1 parent caf89f4 commit d5ef6b4

File tree

2 files changed

+52
-29
lines changed

2 files changed

+52
-29
lines changed

services/php/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ RUN if [ "${CONTAINER_PACKAGE_URL}" != "" ]; then \
1616

1717

1818
RUN if [ "${PHP_EXTENSIONS}" != "" ]; then \
19-
apk add --no-cache autoconf g++ libtool make curl-dev libxml2-dev libevent-dev linux-headers; \
19+
apk add --no-cache autoconf g++ libtool make curl-dev linux-headers; \
2020
fi
2121

2222

services/php/extensions/install.sh

+51-28
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,19 @@ echo
1717
export EXTENSIONS=",${PHP_EXTENSIONS},"
1818

1919

20+
#
21+
# Check if current php version is greater than or equal to
22+
# specific version.
23+
#
24+
# For example, to check if current php is greater than or
25+
# equal to PHP 7.0:
26+
#
27+
# isPhpVersionGreaterOrEqual 7 0
28+
#
29+
# Param 1: Specific PHP Major version
30+
# Param 2: Specific PHP Minor version
31+
# Return : 1 if greater than or equal to, 0 if less than
32+
#
2033
isPhpVersionGreaterOrEqual()
2134
{
2235
local PHP_MAJOR_VERSION=$(php -r "echo PHP_MAJOR_VERSION;")
@@ -30,6 +43,28 @@ isPhpVersionGreaterOrEqual()
3043
}
3144

3245

46+
#
47+
# Install extension from package file(.tgz),
48+
# For example:
49+
#
50+
# installExtensionFromTgz redis-4.1.1
51+
#
52+
# Param 1: Package name with version
53+
# Param 2: enable options
54+
#
55+
installExtensionFromTgz()
56+
{
57+
tgzName=$1
58+
extensionName="${tgzName%%-*}"
59+
60+
mkdir ${extensionName}
61+
tar -xf ${tgzName}.tgz -C ${extensionName} --strip-components=1
62+
( cd ${extensionName} && phpize && ./configure && make ${MC} && make install )
63+
64+
docker-php-ext-enable ${extensionName} $2
65+
}
66+
67+
3368
if [[ -z "${EXTENSIONS##*,pdo_mysql,*}" ]]; then
3469
echo "---------- Install pdo_mysql ----------"
3570
docker-php-ext-install ${MC} pdo_mysql
@@ -178,24 +213,25 @@ fi
178213

179214
if [[ -z "${EXTENSIONS##*,soap,*}" ]]; then
180215
echo "---------- Install soap ----------"
216+
apk add --no-cache libxml2-dev
181217
docker-php-ext-install ${MC} soap
182218
fi
183219

184220
if [[ -z "${EXTENSIONS##*,xsl,*}" ]]; then
185221
echo "---------- Install xsl ----------"
186-
apk add --no-cache libxslt-dev
222+
apk add --no-cache libxml2-dev libxslt-dev
187223
docker-php-ext-install ${MC} xsl
188224
fi
189225

190226
if [[ -z "${EXTENSIONS##*,xmlrpc,*}" ]]; then
191227
echo "---------- Install xmlrpc ----------"
192-
apk add --no-cache libxslt-dev
228+
apk add --no-cache libxml2-dev libxslt-dev
193229
docker-php-ext-install ${MC} xmlrpc
194230
fi
195231

196232
if [[ -z "${EXTENSIONS##*,wddx,*}" ]]; then
197233
echo "---------- Install wddx ----------"
198-
apk add --no-cache libxslt-dev
234+
apk add --no-cache libxml2-dev libxslt-dev
199235
docker-php-ext-install ${MC} wddx
200236
fi
201237

@@ -356,9 +392,7 @@ if [[ -z "${EXTENSIONS##*,mysql,*}" ]]; then
356392
isPhpVersionGreaterOrEqual 7 0
357393

358394
if [[ "$?" = "1" ]]; then
359-
echo
360395
echo "---------- mysql was REMOVED from PHP 7.0.0 ----------"
361-
echo
362396
else
363397
echo "---------- Install mysql ----------"
364398
docker-php-ext-install ${MC} mysql
@@ -381,14 +415,12 @@ fi
381415
if [[ -z "${EXTENSIONS##*,amqp,*}" ]]; then
382416
echo "---------- Install amqp ----------"
383417
apk add --no-cache rabbitmq-c-dev
384-
printf "\n" | pecl install amqp-1.9.4.tgz
385-
docker-php-ext-enable amqp
418+
installExtensionFromTgz amqp-1.9.4
386419
fi
387420

388421
if [[ -z "${EXTENSIONS##*,redis,*}" ]]; then
389422
echo "---------- Install redis ----------"
390-
printf "\n" | pecl install redis-4.1.1.tgz
391-
docker-php-ext-enable redis
423+
installExtensionFromTgz redis-4.1.1
392424
fi
393425

394426
if [[ -z "${EXTENSIONS##*,memcached,*}" ]]; then
@@ -410,16 +442,15 @@ if [[ -z "${EXTENSIONS##*,xdebug,*}" ]]; then
410442
isPhpVersionGreaterOrEqual 7 0
411443

412444
if [[ "$?" = "1" ]]; then
413-
printf "\n" | pecl install xdebug-2.6.1.tgz
445+
installExtensionFromTgz xdebug-2.6.1
414446
else
415-
printf "\n" | pecl install xdebug-2.5.5.tgz
447+
installExtensionFromTgz xdebug-2.5.5
416448
fi
417-
418-
docker-php-ext-enable xdebug
419449
fi
420450

421451
if [[ -z "${EXTENSIONS##*,event,*}" ]]; then
422452
echo "---------- Install event ----------"
453+
apk add --no-cache libevent-dev
423454
export is_sockets_installed=$(php -r "echo extension_loaded('sockets');")
424455

425456
if [[ "${is_sockets_installed}" = "" ]]; then
@@ -428,14 +459,12 @@ if [[ -z "${EXTENSIONS##*,event,*}" ]]; then
428459
fi
429460

430461
echo "---------- Install event again ----------"
431-
printf "\n" | pecl install event-2.5.3.tgz
432-
docker-php-ext-enable --ini-name event.ini event
462+
installExtensionFromTgz event-2.5.3 "--ini-name event.ini"
433463
fi
434464

435465
if [[ -z "${EXTENSIONS##*,mongodb,*}" ]]; then
436466
echo "---------- Install mongodb ----------"
437-
printf "\n" | pecl install mongodb-1.5.5.tgz
438-
docker-php-ext-enable mongodb
467+
installExtensionFromTgz mongodb-1.5.5
439468
fi
440469

441470
if [[ -z "${EXTENSIONS##*,yaf,*}" ]]; then
@@ -444,28 +473,22 @@ if [[ -z "${EXTENSIONS##*,yaf,*}" ]]; then
444473

445474
if [[ "$?" = "1" ]]; then
446475
printf "\n" | pecl install yaf
476+
docker-php-ext-enable yaf
447477
else
448-
# install by pecl may cause error:
449-
# can't create directory 'configs/.libs': No such file or directory
450-
mkdir yaf
451-
tar -xf yaf-2.3.5.tgz -C yaf --strip-components=1
452-
( cd yaf && phpize && ./configure && make ${MC} && make install )
478+
installExtensionFromTgz yaf-2.3.5
453479
fi
454-
455-
docker-php-ext-enable yaf
456480
fi
457481

482+
458483
if [[ -z "${EXTENSIONS##*,swoole,*}" ]]; then
459484
echo "---------- Install swoole ----------"
460485
isPhpVersionGreaterOrEqual 7 0
461486

462487
if [[ "$?" = "1" ]]; then
463-
printf "\n" | pecl install swoole-4.4.2.tgz
488+
installExtensionFromTgz swoole-4.4.2
464489
else
465-
printf "\n" | pecl install swoole-2.0.11.tgz
490+
installExtensionFromTgz swoole-2.0.11
466491
fi
467-
468-
docker-php-ext-enable swoole
469492
fi
470493

471494
if [[ -z "${EXTENSIONS##*,zip,*}" ]]; then

0 commit comments

Comments
 (0)