parent
51c0897c45
commit
7910f27d85
|
@ -85,6 +85,7 @@ setDistro() {
|
||||||
# - PHP_MAJDOTMINDOTPAT_VERSION: Major-Minor-Patch version, format M.m.p (example 8.0.1 for PHP 8.0.1)
|
# - PHP_MAJDOTMINDOTPAT_VERSION: Major-Minor-Patch version, format M.m.p (example 8.0.1 for PHP 8.0.1)
|
||||||
# - PHP_THREADSAFE: 1 if PHP is thread-safe (TS), 0 if not thread-safe (NTS)
|
# - PHP_THREADSAFE: 1 if PHP is thread-safe (TS), 0 if not thread-safe (NTS)
|
||||||
# - PHP_BITS: 32 if PHP is compiled for 32-bit, 64 if 64-bit
|
# - PHP_BITS: 32 if PHP is compiled for 32-bit, 64 if 64-bit
|
||||||
|
# - PHP_EXTDIR: the absolute path where the PHP extensions reside
|
||||||
setPHPVersionVariables() {
|
setPHPVersionVariables() {
|
||||||
PHP_MAJDOTMINDOTPAT_VERSION="$(php-config --version)"
|
PHP_MAJDOTMINDOTPAT_VERSION="$(php-config --version)"
|
||||||
PHP_MAJMIN_VERSION=$(printf '%s' "$PHP_MAJDOTMINDOTPAT_VERSION" | awk -F. '{print $1*100+$2}')
|
PHP_MAJMIN_VERSION=$(printf '%s' "$PHP_MAJDOTMINDOTPAT_VERSION" | awk -F. '{print $1*100+$2}')
|
||||||
|
@ -92,6 +93,7 @@ setPHPVersionVariables() {
|
||||||
PHP_MAJMINPAT_VERSION=$(printf '%s' "$PHP_MAJDOTMINDOTPAT_VERSION" | awk -F. '{print $1*10000+$2*100+$3}')
|
PHP_MAJMINPAT_VERSION=$(printf '%s' "$PHP_MAJDOTMINDOTPAT_VERSION" | awk -F. '{print $1*10000+$2*100+$3}')
|
||||||
PHP_THREADSAFE=$(php -r 'echo ZEND_THREAD_SAFE ? 1 : 0;')
|
PHP_THREADSAFE=$(php -r 'echo ZEND_THREAD_SAFE ? 1 : 0;')
|
||||||
PHP_BITS=$(php -r 'echo PHP_INT_SIZE * 8;')
|
PHP_BITS=$(php -r 'echo PHP_INT_SIZE * 8;')
|
||||||
|
PHP_EXTDIR="$(php -d display_errors=stderr -r 'echo realpath(ini_get("extension_dir"));')"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Fix apt-get being very slow on Debian Jessie
|
# Fix apt-get being very slow on Debian Jessie
|
||||||
|
@ -1373,6 +1375,75 @@ getCompilationProcessorCount() {
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Get the full path of a PHP extension given its name.
|
||||||
|
#
|
||||||
|
# Arguments:
|
||||||
|
# $1: the name of the PHP extension
|
||||||
|
#
|
||||||
|
# Output:
|
||||||
|
# The absolute path of the PHP extension file (or nothing if the file can't be found)
|
||||||
|
getModuleFullPath() {
|
||||||
|
case "$1" in
|
||||||
|
*)
|
||||||
|
getModuleFullPath_path="$PHP_EXTDIR/$1.so"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if test -f "$getModuleFullPath_path"; then
|
||||||
|
printf '%s' "$getModuleFullPath_path"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Post-process a PHP module just compiled and installed in the PHP extension directory
|
||||||
|
#
|
||||||
|
# Arguments:
|
||||||
|
# $1: the name of the PHP extension
|
||||||
|
#
|
||||||
|
# Return:
|
||||||
|
# 0 (true): if suceeded
|
||||||
|
# non-zero (false): in case of errors
|
||||||
|
postProcessModule() {
|
||||||
|
postProcessModule_file="$(getModuleFullPath "$1")"
|
||||||
|
if test -z "$postProcessModule_file"; then
|
||||||
|
printf 'Unable to find the file of the PHP extension "%s"\n' "$1" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
printf 'Removing symbols from %s... ' "$postProcessModule_file"
|
||||||
|
postProcessModule_preSize="$(stat -c %s "$postProcessModule_file")"
|
||||||
|
strip --strip-all "$postProcessModule_file"
|
||||||
|
postProcessModule_postSize="$(stat -c %s "$postProcessModule_file")"
|
||||||
|
printf 'done (%s bytes saved).\n' "$((postProcessModule_preSize - postProcessModule_postSize))"
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check that a PHP module actually works (better to run this check before enabling the extension)
|
||||||
|
#
|
||||||
|
# Arguments:
|
||||||
|
# $1: the name of the PHP extension
|
||||||
|
#
|
||||||
|
# Return:
|
||||||
|
# 0 (true): if the string is in the list
|
||||||
|
# 1 (false): if the string is not in the list
|
||||||
|
checkModuleWorking() {
|
||||||
|
checkModuleWorking_file="$(getModuleFullPath "$1")"
|
||||||
|
if test -z "$checkModuleWorking_file"; then
|
||||||
|
printf 'Unable to find the file of the PHP extension "%s"\n' "$1" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if readelf --wide --syms "$checkModuleWorking_file" | grep -Eq ' zend_extension_entry$'; then
|
||||||
|
checkModuleWorking_inientry=zend_extension
|
||||||
|
else
|
||||||
|
checkModuleWorking_inientry=extension
|
||||||
|
fi
|
||||||
|
printf 'Check if the %s %s can be loaded... ' "$checkModuleWorking_inientry" "$1"
|
||||||
|
checkModuleWorking_err="$(php -d "$checkModuleWorking_inientry=$checkModuleWorking_file" -r 'return;' 2>&1 || true)"
|
||||||
|
if test -n "$checkModuleWorking_err"; then
|
||||||
|
printf 'Error loading the "%s" extension from "%s":\n%s\n' "$1" "$checkModuleWorking_file" "$checkModuleWorking_err" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
printf 'ok.\n'
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
# Enable a PHP extension
|
# Enable a PHP extension
|
||||||
#
|
#
|
||||||
# Arguments:
|
# Arguments:
|
||||||
|
@ -3046,6 +3117,8 @@ installRemoteModule() {
|
||||||
fi
|
fi
|
||||||
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags"
|
installPeclPackage "$installRemoteModule_module" "$installRemoteModule_version" "$installRemoteModule_cppflags"
|
||||||
fi
|
fi
|
||||||
|
postProcessModule "$installRemoteModule_module"
|
||||||
|
checkModuleWorking "$installRemoteModule_module"
|
||||||
case "$installRemoteModule_module" in
|
case "$installRemoteModule_module" in
|
||||||
apcu_bc)
|
apcu_bc)
|
||||||
# apcu_bc must be loaded after apcu
|
# apcu_bc must be loaded after apcu
|
||||||
|
|
Loading…
Reference in New Issue