e4302b9022c3afc7fb4b74ecaa314f8f447d4e33
[plcapi.git] / tests / ci / setup / setup_php.sh
1 #!/bin/sh
2
3 set -e
4
5 configure_php_ini() {
6     # @todo make this idempotent so that it can be run multiple times in a row
7     echo "cgi.fix_pathinfo = 1" >> "${1}"
8     echo "always_populate_raw_post_data = -1" >> "${1}"
9
10     # @todo this only disables xdebug for CLI. To do the same for the FPM config as well, should we use instead `phpdismod` ?
11     XDEBUG_INI=$(php -i | grep xdebug.ini | grep -v '=>' | head -1)
12     if [ "$XDEBUG_INI" != "" ]; then
13         XDEBUG_INI="$(echo "$XDEBUG_INI" | tr -d ',')"
14         mv "$XDEBUG_INI" "$XDEBUG_INI.bak";
15     fi
16 }
17
18 # install php
19 PHP_VERSION="$1"
20 DEBIAN_VERSION="$(lsb_release -s -c)"
21
22 if [ "${PHP_VERSION}" = default ]; then
23     if [ "${DEBIAN_VERSION}" = jessie -o "${DEBIAN_VERSION}" = precise -o "${DEBIAN_VERSION}" = trusty ]; then
24         PHPSUFFIX=5
25     else
26         PHPSUFFIX=
27     fi
28     # @todo check for mbstring presence in php5 (jessie) packages
29     DEBIAN_FRONTEND=noninteractive apt-get install -y \
30         php${PHPSUFFIX} \
31         php${PHPSUFFIX}-cli \
32         php${PHPSUFFIX}-dom \
33         php${PHPSUFFIX}-curl \
34         php${PHPSUFFIX}-fpm \
35         php${PHPSUFFIX}-mbstring \
36         php${PHPSUFFIX}-xdebug
37 else
38     DEBIAN_FRONTEND=noninteractive apt-get install -y language-pack-en-base software-properties-common
39     LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
40     apt-get update
41
42     DEBIAN_FRONTEND=noninteractive apt-get install -y \
43         php${PHP_VERSION} \
44         php${PHP_VERSION}-cli \
45         php${PHP_VERSION}-dom \
46         php${PHP_VERSION}-curl \
47         php${PHP_VERSION}-fpm \
48         php${PHP_VERSION}-mbstring \
49         php${PHP_VERSION}-xdebug
50
51     update-alternatives --set php /usr/bin/php${PHP_VERSION}
52 fi
53
54 PHPVER=$(php -r 'echo implode(".",array_slice(explode(".",PHP_VERSION),0,2));' 2>/dev/null)
55
56 configure_php_ini /etc/php/${PHPVER}/fpm/php.ini
57
58 # use a nice name for the php-fpm service, so that it does not depend on php version running
59 service "php${PHPVER}-fpm" stop
60 ln -s "/etc/init.d/php${PHPVER}-fpm" /etc/init.d/php-fpm
61
62 # @todo shall we configure php-fpm?
63
64 service php-fpm start
65
66 # configure apache
67 a2enconf php${PHPVER}-fpm
68 service apache2 restart