Files
runner-images/images/linux/scripts/installers/php.sh
2020-11-06 10:35:05 +05:30

137 lines
3.9 KiB
Bash

#!/bin/bash -e
################################################################################
## File: php.sh
## Desc: Installs php
################################################################################
# Source the helpers for use with the script
source $HELPER_SCRIPTS/etc-environment.sh
source $HELPER_SCRIPTS/os.sh
# add repository
apt-add-repository ppa:ondrej/php -y
apt-get update
# Install PHP
if isUbuntu16 ; then
php_versions="5.6 7.0 7.1 7.2 7.3 7.4"
fi
if isUbuntu18 ; then
php_versions="7.1 7.2 7.3 7.4"
fi
if isUbuntu20 ; then
php_versions="7.4"
fi
for version in $php_versions; do
echo "Installing PHP $version"
apt-fast install -y --no-install-recommends \
php$version \
php$version-bcmath \
php$version-bz2 \
php$version-cgi \
php$version-cli \
php$version-common \
php$version-curl \
php$version-dba \
php$version-dev \
php$version-enchant \
php$version-fpm \
php$version-gd \
php$version-gmp \
php$version-imap \
php$version-interbase \
php$version-intl \
php$version-json \
php$version-ldap \
php$version-mbstring \
php$version-mysql \
php$version-odbc \
php$version-opcache \
php$version-pgsql \
php$version-phpdbg \
php$version-pspell \
php$version-readline \
php$version-snmp \
php$version-soap \
php$version-sqlite3 \
php$version-sybase \
php$version-tidy \
php$version-xml \
php$version-xmlrpc \
php$version-xsl \
php$version-zip
if [[ $version == "5.6" || $version == "7.0" || $version == "7.1" ]]; then
apt-fast install -y --no-install-recommends php$version-mcrypt php$version-recode
fi
if [[ $version == "7.2" || $version == "7.3" ]]; then
apt-fast install -y --no-install-recommends php$version-recode
fi
done
apt-fast install -y --no-install-recommends \
php-amqp \
php-apcu \
php-igbinary \
php-memcache \
php-memcached \
php-mongodb \
php-pear \
php-redis \
php-xdebug \
php-yaml \
php-zmq
apt-fast install -y --no-install-recommends snmp
# Install composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === file_get_contents('https://composer.github.io/installer.sig')) { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
sudo mv composer.phar /usr/bin/composer
php -r "unlink('composer-setup.php');"
# Update /etc/environment
prependEtcEnvironmentPath /home/runner/.config/composer/vendor/bin
# Add composer bin folder to path
echo 'export PATH="$PATH:$HOME/.config/composer/vendor/bin"' >> /etc/skel/.bashrc
#Create composer folder for user to preserve folder permissions
mkdir -p /etc/skel/.composer
# Install phpunit (for PHP)
wget -q -O phpunit https://phar.phpunit.de/phpunit-7.phar
chmod +x phpunit
mv phpunit /usr/local/bin/phpunit
# Run tests to determine that the software installed as expected
echo "Testing to make sure that script performed as expected, and basic scenarios work"
for cmd in composer pear pecl phpunit; do
if ! command -v $cmd; then
echo "$cmd was not installed"
exit 1
fi
done
for version in $php_versions; do
if ! command -v php$version; then
echo "php$version was not installed"
exit 1
elif ! command -v php-config$version || ! command -v phpize$version; then
echo "php$version-dev was not installed"
exit 1
fi
done
# ubuntu 20.04 libzip-dev is libzip5 based and is not compatible libzip-dev of ppa:ondrej/php
# see https://github.com/actions/virtual-environments/issues/1084
if isUbuntu20 ; then
rm /etc/apt/sources.list.d/ondrej-ubuntu-php-focal.list
apt-get update
fi