Несколько php версий на одном сервере. Gentoo Linux

В gentoo linux есть возможность установки несколько php версий на один сервер. Рассмотрим подробнее как это сделать на примере сервера с ОС gentoo x64. На момент написания статьи в портажах есть несколько версий

  • php-5.6.29
  • php-5.6.30
  • php-7.0.15
  • php-7.1.1

Мы будем устанавливать php-5.6.30 и php-7.1.1. Для начала добавляем в make.conf строки

PHP_TARGETS="php5-6 php7-1 php7-2 php7-3"
PHP_INI_VERSION="production"

php7-2 php7-3 — это задел на будущее. Когда эти версии окажутся в портажах не нужно будет вносить правки в make.conf, а сразу переходить к установке

Далее в папке package.use создаем файл php (имя может быть произвольное), в котором указываем опции сборки php. У меня написано следующее:

dev-lang/php -berkdb bzip2 cli crypt ctype curl-embed exif fileinfo filter fpm ftp gd -gdbm\
 -gmp hash iconv intl json -mhash mysql mysqli mysqlnd opcache pdo phar posix -redline session\
 simplexml sockets ssl -tidy tokenizer truetype unicode xml xmlrpc xmlreader xml writer xslt\
 zip zlib soap imap kerberos sqlite

Собираем

emerge =dev-lang/php-5.6.30 =dev-lang/php-7.1.1

В результате в /etc/php наблюдаем следующие папки

cli-php5.6
cli-php7.1
fpm-php5.6
fpm-php7.1

Настраиваем обе версии сообразно своим потребностям и переходим в /etc/init.d. Там есть лишь один стартовый скрипт php-fpm, а нам нужно запускать две версии php сразу. Для этого нужно пролинковать

ln -s php-fpm php-fpm-php5.6
ln -s php-fpm php-fpm-php7.1

Запускаем

service php-fpm-php5.6 start
service php-fpm-php7.1 start

Если ошибок нет, вносим в автозапуск

rc-update add php-fpm-php5.6 default
rc-update add php-fpm-php7.1 default

В принципе идея понятна. Таким образом можно установить даже более, чем две версии php. У нас в продакшене их было сразу три

Александр Черных

системный администратор

Статьи по теме