Fix installing ionCube in multiarch, fix installing SourceGuardian for 32-bit PHP (#444)

pull/445/head 1.2.63
Michele Locati 2021-09-28 13:11:38 +02:00 committed by GitHub
parent f81f0cd1a2
commit cdda8c2bdd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 95 additions and 36 deletions

View File

@ -74,12 +74,14 @@ setDistro() {
# - PHP_MAJMINPAT_VERSION: Major-Minor-Patch version, format MMmmpp (example 80001 for PHP 8.0.1) variables containing integers value # - PHP_MAJMINPAT_VERSION: Major-Minor-Patch version, format MMmmpp (example 80001 for PHP 8.0.1) variables containing integers value
# - 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
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}')
PHP_MAJDOTMIN_VERSION=$(printf '%s' "$PHP_MAJDOTMINDOTPAT_VERSION" | cut -d. -f1-2) PHP_MAJDOTMIN_VERSION=$(printf '%s' "$PHP_MAJDOTMINDOTPAT_VERSION" | cut -d. -f1-2)
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;')
} }
# Fix apt-get being very slow on Debian Jessie # Fix apt-get being very slow on Debian Jessie
@ -1317,17 +1319,20 @@ compareVersions() {
# Set: # Set:
# ORACLE_INSTANTCLIENT_LIBPATH # ORACLE_INSTANTCLIENT_LIBPATH
installOracleInstantClient() { installOracleInstantClient() {
if test $(php -r 'echo PHP_INT_SIZE;') -eq 4; then case $PHP_BITS in
installOracleInstantClient_client=client 32)
installOracleInstantClient_version='19.9' installOracleInstantClient_client=client
installOracleInstantClient_ic=https://download.oracle.com/otn_software/linux/instantclient/199000/instantclient-basic-linux-$installOracleInstantClient_version.0.0.0dbru.zip installOracleInstantClient_version='19.9'
installOracleInstantClient_sdk=https://download.oracle.com/otn_software/linux/instantclient/199000/instantclient-sdk-linux-$installOracleInstantClient_version.0.0.0dbru.zip installOracleInstantClient_ic=https://download.oracle.com/otn_software/linux/instantclient/199000/instantclient-basic-linux-$installOracleInstantClient_version.0.0.0dbru.zip
else installOracleInstantClient_sdk=https://download.oracle.com/otn_software/linux/instantclient/199000/instantclient-sdk-linux-$installOracleInstantClient_version.0.0.0dbru.zip
installOracleInstantClient_client=client64 ;;
installOracleInstantClient_version='21.1' *)
installOracleInstantClient_ic=https://download.oracle.com/otn_software/linux/instantclient/211000/instantclient-basic-linux.x64-$installOracleInstantClient_version.0.0.0.zip installOracleInstantClient_client=client64
installOracleInstantClient_sdk=https://download.oracle.com/otn_software/linux/instantclient/211000/instantclient-sdk-linux.x64-$installOracleInstantClient_version.0.0.0.zip installOracleInstantClient_version='21.1'
fi installOracleInstantClient_ic=https://download.oracle.com/otn_software/linux/instantclient/211000/instantclient-basic-linux.x64-$installOracleInstantClient_version.0.0.0.zip
installOracleInstantClient_sdk=https://download.oracle.com/otn_software/linux/instantclient/211000/instantclient-sdk-linux.x64-$installOracleInstantClient_version.0.0.0.zip
;;
esac
ORACLE_INSTANTCLIENT_LIBPATH=/usr/lib/oracle/$installOracleInstantClient_version/$installOracleInstantClient_client/lib ORACLE_INSTANTCLIENT_LIBPATH=/usr/lib/oracle/$installOracleInstantClient_version/$installOracleInstantClient_client/lib
if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH"; then if ! test -e "$ORACLE_INSTANTCLIENT_LIBPATH"; then
printf 'Downloading Oracle Instant Client v%s... ' "$installOracleInstantClient_version" printf 'Downloading Oracle Instant Client v%s... ' "$installOracleInstantClient_version"
@ -1354,11 +1359,14 @@ installOracleInstantClient() {
cat "$ORACLE_INSTANTCLIENT_LIBPATH" | awk -v suffix=":$ORACLE_INSTANTCLIENT_LIBPATH" '{print NR==1 ? $0suffix : $0}' >"$ORACLE_INSTANTCLIENT_LIBPATH" cat "$ORACLE_INSTANTCLIENT_LIBPATH" | awk -v suffix=":$ORACLE_INSTANTCLIENT_LIBPATH" '{print NR==1 ? $0suffix : $0}' >"$ORACLE_INSTANTCLIENT_LIBPATH"
fi fi
else else
if test $(php -r 'echo PHP_INT_SIZE;') -eq 4; then case $PHP_BITS in
echo "/lib:/usr/local/lib:/usr/lib:$ORACLE_INSTANTCLIENT_LIBPATH" >"$installOracleInstantClient_ldconf" 32)
else echo "/lib:/usr/local/lib:/usr/lib:$ORACLE_INSTANTCLIENT_LIBPATH" >"$installOracleInstantClient_ldconf"
echo "/lib64:/lib:/usr/local/lib:/usr/lib:$ORACLE_INSTANTCLIENT_LIBPATH" >"$installOracleInstantClient_ldconf" ;;
fi *)
echo "/lib64:/lib:/usr/local/lib:/usr/lib:$ORACLE_INSTANTCLIENT_LIBPATH" >"$installOracleInstantClient_ldconf"
;;
esac
fi fi
;; ;;
debian) debian)
@ -1457,17 +1465,54 @@ actuallyInstallComposer() {
rm -- "$actuallyInstallComposer_installer" rm -- "$actuallyInstallComposer_installer"
} }
# Install SourceGuardian Loader # Install ionCube Loader
installSourceGuardian() { installIonCubeLoader() {
case $(uname -m) in # See https://www.ioncube.com/loaders.php
i386 | i686 | x86) case $PHP_BITS in
installSourceGuardian_url=https://www.sourceguardian.com/loaders/download/loaders.linux-i386.tar.gz 32)
;; case $(uname -m) in
aarch64 | arm64 | armv8) aarch* | arm*)
installSourceGuardian_url=https://www.sourceguardian.com/loaders/download/loaders.linux-aarch64.tar.gz installIonCubeLoader_url="https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_armv7l.tar.gz"
;;
*)
installIonCubeLoader_url="https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz"
;;
esac
;; ;;
*) *)
installSourceGuardian_url=https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz case $(uname -m) in
aarch64 | arm64 | armv8)
installIonCubeLoader_url="https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_aarch64.tar.gz"
;;
*)
installIonCubeLoader_url="https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz"
;;
esac
;;
esac
printf 'Downloading ionCube Loader... '
installIonCubeLoader_dir="$(getPackageSource $installIonCubeLoader_url)"
echo 'done.'
installIonCubeLoader_so=$(php -r "printf('ioncube_loader_lin_%s.%s%s.so', PHP_MAJOR_VERSION, PHP_MINOR_VERSION, ZEND_THREAD_SAFE ? '_ts' : '');")
cp "$installIonCubeLoader_dir/$installIonCubeLoader_so" "$(getPHPExtensionsDir)/ioncube_loader.so"
}
# Install SourceGuardian Loader
installSourceGuardian() {
# See https://www.sourceguardian.com/loaders.html
case $PHP_BITS in
32)
installSourceGuardian_url=https://www.sourceguardian.com/loaders/download/loaders.linux-i386.tar.gz
;;
*)
case $(uname -m) in
aarch64 | arm64 | armv8)
installSourceGuardian_url=https://www.sourceguardian.com/loaders/download/loaders.linux-aarch64.tar.gz
;;
*)
installSourceGuardian_url=https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz
;;
esac
;; ;;
esac esac
printf 'Downloading SourceGuardian... ' printf 'Downloading SourceGuardian... '
@ -1970,17 +2015,7 @@ installRemoteModule() {
fi fi
;; ;;
ioncube_loader) ioncube_loader)
installRemoteModule_src='https://downloads.ioncube.com/loader_downloads/' installIonCubeLoader
if test $(php -r 'echo PHP_INT_SIZE;') -eq 4; then
installRemoteModule_src="${installRemoteModule_src}ioncube_loaders_lin_x86.tar.gz"
else
installRemoteModule_src="${installRemoteModule_src}ioncube_loaders_lin_x86-64.tar.gz"
fi
printf 'Downloading ionCube Loader... '
installRemoteModule_src="$(getPackageSource $installRemoteModule_src)"
echo 'done.'
installRemoteModule_so=$(php -r "printf('ioncube_loader_lin_%s.%s%s.so', PHP_MAJOR_VERSION, PHP_MINOR_VERSION, ZEND_THREAD_SAFE ? '_ts' : '');")
cp "$installRemoteModule_src/$installRemoteModule_so" "$(getPHPExtensionsDir)/$installRemoteModule_module.so"
installRemoteModule_manuallyInstalled=1 installRemoteModule_manuallyInstalled=1
;; ;;
jsmin) jsmin)

24
scripts/tests/ioncube_loader Executable file
View File

@ -0,0 +1,24 @@
#!/usr/bin/env php
<?php
require_once __DIR__ . '/_bootstrap.php';
$rc = 0;
foreach ([false => 'PHP module', true => 'Zend extension'] as $type => $typeName) {
$extensions = get_loaded_extensions($type);
$found = '';
foreach ($extensions as $extension) {
if (preg_match('/^(the )?ioncube (php )?loader/i', $extension)) {
$found = $extension;
break;
}
}
if ($found !== '') {
fwrite(STDOUT, "The {$found} {$typeName} is loaded.\n");
} else {
fwrite(STDERR, "The ionCube Loader {$typeName} is not loaded.\nLoaded extensions are: \n- " . implode("\n- ", $extensions));
$rc = 1;
}
}
exit($rc);