X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Fci%2Fsetup%2Fsetup_php.sh;h=342404d43b453420ce753099c68fa4c231885cd6;hb=a51c9f9fc82acc4d79f3c27e6dcad43721db5c02;hp=0572037be6d5ba87fb6769979c601afc71d41f30;hpb=dec177e13bb5e03443e617646d36d678159ca0eb;p=plcapi.git diff --git a/tests/ci/setup/setup_php.sh b/tests/ci/setup/setup_php.sh old mode 100644 new mode 100755 index 0572037..342404d --- a/tests/ci/setup/setup_php.sh +++ b/tests/ci/setup/setup_php.sh @@ -1,104 +1,87 @@ #!/bin/sh +# Has to be run as admin + +# To be kept in sync with setup_php_travis.sh + +# @todo make it optional to install xdebug. It is fe. missing in sury's ppa for Xenial +# @todo make it optional to disable xdebug ? + set -e configure_php_ini() { - # @todo make this idempotent so that it can be run multiple times in a row + # note: these settings are not required for cli config echo "cgi.fix_pathinfo = 1" >> "${1}" echo "always_populate_raw_post_data = -1" >> "${1}" - # @todo this only disables xdebug for CLI. To do the same for the FPM config as well, should we use instead `phpdismod` ? - XDEBUG_INI=$(php -i | grep xdebug.ini | grep -v '=>' | head -1) - if [ "$XDEBUG_INI" != "" ]; then - XDEBUG_INI="$(echo "$XDEBUG_INI" | tr -d ',')" - mv "$XDEBUG_INI" "$XDEBUG_INI.bak"; - fi + # we disable xdebug for speed for both cli and web mode + phpdismod xdebug } -if [ "$TRAVIS" != true ]; then +# install php +PHP_VERSION="$1" +DEBIAN_VERSION="$(lsb_release -s -c)" - # install php - PHP_VERSION="$1" - DEBIAN_VERSION="$(lsb_release -s -c)" - - if [ "${PHP_VERSION}" = default ]; then - if [ "${DEBIAN_VERSION}" = jessie -o "${DEBIAN_VERSION}" = precise -o "${DEBIAN_VERSION}" = trusty ]; then - PHPSUFFIX=5 - else - PHPSUFFIX= - fi - # @todo check for mbstring presence in php5 (jessie) packages - DEBIAN_FRONTEND=noninteractive apt-get install -y \ - php${PHPSUFFIX} \ - php${PHPSUFFIX}-cli \ - php${PHPSUFFIX}-dom \ - php${PHPSUFFIX}-curl \ - php${PHPSUFFIX}-fpm \ - php${PHPSUFFIX}-mbstring \ - php${PHPSUFFIX}-xdebug +if [ "${PHP_VERSION}" = default ]; then + if [ "${DEBIAN_VERSION}" = jessie -o "${DEBIAN_VERSION}" = precise -o "${DEBIAN_VERSION}" = trusty ]; then + PHPSUFFIX=5 else - DEBIAN_FRONTEND=noninteractive apt-get install -y language-pack-en-base software-properties-common - LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php - apt-get update - - DEBIAN_FRONTEND=noninteractive apt-get install -y \ - php${PHP_VERSION} \ - php${PHP_VERSION}-cli \ - php${PHP_VERSION}-dom \ - php${PHP_VERSION}-curl \ - php${PHP_VERSION}-fpm \ - php${PHP_VERSION}-mbstring \ - php${PHP_VERSION}-xdebug - - update-alternatives --set php /usr/bin/php${PHP_VERSION} + PHPSUFFIX= fi - - PHPVER=$(php -r 'echo implode(".",array_slice(explode(".",PHP_VERSION),0,2));' 2>/dev/null) - - configure_php_ini /etc/php/${PHPVER}/fpm/php.ini - - # use a nice name for the php-fpm service, so that it does not depend on php version running - service "php${PHPVER}-fpm" stop - ln -s "/etc/init.d/php${PHPVER}-fpm" /etc/init.d/php-fpm - - # @todo shall we configure php-fpm? - - service php-fpm start - - # configure apache - a2enconf php${PHPVER}-fpm - service apache2 restart - + # @todo check for mbstring presence in php5 (jessie) packages + DEBIAN_FRONTEND=noninteractive apt-get install -y \ + php${PHPSUFFIX} \ + php${PHPSUFFIX}-cli \ + php${PHPSUFFIX}-dom \ + php${PHPSUFFIX}-curl \ + php${PHPSUFFIX}-fpm \ + php${PHPSUFFIX}-mbstring \ + php${PHPSUFFIX}-xdebug else + # on GHA runners ubuntu version, php 7.4 and 8.0 seem to be preinstalled. Remove them if found + for PHP_CURRENT in $(dpkg -l | grep -E 'php.+-common' | awk '{print $2}'); do + if [ "${PHP_CURRENT}" != "php${PHP_VERSION}-common" ]; then + apt-get purge -y "${PHP_CURRENT}" + fi + done + + DEBIAN_FRONTEND=noninteractive apt-get install -y language-pack-en-base software-properties-common + LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php + apt-get update + + DEBIAN_FRONTEND=noninteractive apt-get install -y \ + php${PHP_VERSION} \ + php${PHP_VERSION}-cli \ + php${PHP_VERSION}-dom \ + php${PHP_VERSION}-curl \ + php${PHP_VERSION}-fpm \ + php${PHP_VERSION}-mbstring \ + php${PHP_VERSION}-xdebug + + update-alternatives --set php /usr/bin/php${PHP_VERSION} +fi - # php is already installed, via phpenv - - PHPVER=$(phpenv version-name) - - configure_php_ini ~/.phpenv/versions/${PHPVER}/etc/php.ini +PHPVER=$(php -r 'echo implode(".",array_slice(explode(".",PHP_VERSION),0,2));' 2>/dev/null) - # configure php-fpm - cp ~/.phpenv/versions/${PHPVER}/etc/php-fpm.conf.default ~/.phpenv/versions/${PHPVER}/etc/php-fpm.conf +configure_php_ini /etc/php/${PHPVER}/fpm/php.ini - # work around travis issue #3385 - if [ -d ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d ]; then - if [ "$TRAVIS_PHP_VERSION" = "7.0" -a -n "$(ls -A ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d)" ]; then - cp ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d/www.conf - fi - if [ "$TRAVIS_PHP_VERSION" = "7.1" -a -n "$(ls -A ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d)" ]; then - cp ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d/www.conf - fi - if [ "$TRAVIS_PHP_VERSION" = "7.2" -a -n "$(ls -A ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d)" ]; then - cp ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d/www.conf - fi - if [ "$TRAVIS_PHP_VERSION" = "7.3" -a -n "$(ls -A ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d)" ]; then - cp ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/${PHPVER}/etc/php-fpm.d/www.conf - fi +# use a nice name for the php-fpm service, so that it does not depend on php version running. Try to make that work +# both for docker and VMs +service "php${PHPVER}-fpm" stop +if [ -f "/etc/init.d/php${PHPVER}-fpm" ]; then + ln -s "/etc/init.d/php${PHPVER}-fpm" /etc/init.d/php-fpm +fi +if [ -f "/lib/systemd/system/php${PHPVER}-fpm.service" ]; then + ln -s "/lib/systemd/system/php${PHPVER}-fpm.service" /lib/systemd/system/php-fpm.service + if [ ! -f /.dockerenv ]; then + systemctl daemon-reload fi +fi - ~/.phpenv/versions/${PHPVER}/sbin/php-fpm +# @todo shall we configure php-fpm? - # @todo configure apache for php-fpm via mod_proxy_fcgi... - a2enconf php${PHPVER}-fpm - service apache2 restart -fi +service php-fpm start + +# configure apache +a2enconf php${PHPVER}-fpm +service apache2 restart