Разные версии PHP на одном сервере | Обновление PHP в ISP Manager | Linux

Разные версии PHP на одном сервере | Обновление PHP в ISP Manager | Linux

При использовании ISP Manger'а часто встает вопрос об обновлении PHP до актуальной версии, либо же использование разных версий PHP для различных пользователей или же сайтов. Этот способ будет полезен не только с ISP Manager'ом но и при настройке web-сервера вручную.

 

Обновление PHP на CentOS

Для начала нам надо подключить репозиторий Remi из которого PHP будет обновляться. Выберите нужную вам версию:

Centos-6:

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

Centos-7:

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Centos-8:

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-8.rpm

Теперь у нас появился файл /etc/yum.repos.d/remi.repo

На примере Centos-6, по умолчанию устанавливается версия 5.3. Чтобы установить версию посвежее (5.4), в файле /etc/yum.repos.d/remi.repo нужно в первом, главном, разделе [remi] поменять значение enable с 0 на 1. Должно получится так:

nano /etc/yum.repos.d/remi.repo

[remi] name=Les RPM de remi pour Enterprise Linux 6 - $basearch #baseurl=http://rpms.famillecollet.com/enterprise/6/remi/$basearch/ mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

После чего делаем:

yum install php -y

Вуаля, можно довольствоваться обновленной версией.
Этот способ так же работает с apache mod_php

Если нужно установить версию 5.5, то в том же файле /etc/yum.repos.d/remi.repo нужно включить раздел [remi-php55]. Так же несложно догадаться, что для версии 5.6 нужно включить соответствующий раздел [remi-php56]

 

 

Несколько версий PHP на CentOS

Для начала отмечу, что способ работает на Centos с архитектурой x86_64. В remi нет пакетов для установки нескольких версий для i386

Так же сначала подключаем репозиторий remi, если вы этого ещё не сделали. Включаем нужный нам раздел. Теперь, чтобы установить его параллельно уже имеющейся версии, мы должны указывать имена пакетов с номером версии. Например, для версии 5.6 мы будем использовать команду:

yum install php56-php php56-php-cli php56-php-common php56-php-gd php56-php-ioncube-loader php56-php-mbstring php56-php-mcrypt php56-php-mysqlnd php56-php-opcache php56-php-pear

Соответственно и исполнительные файлы данной версии будут называться PHP56

 

 

Обновление PHP в Ubuntu

В ubuntu для удобства будем использовать репозиторий от Ondrej

Для начала установим add-apt-repository, если у вас его ещё нет:

apt-get install software-properties-common

Теперь, для установки репозитория обновления до 5.4 запускаем:

add-apt-repository ppa:ondrej/php5-oldstabl

Для 5.5:

add-apt-repository ppa:ondrej/php5

Для 5.6:

add-apt-repository ppa:ondrej/php5-5.6

После добавления репозитория для обновления запускаем:

apt-get install php5

 

 

Несколько версий PHP в Ubuntu 

Тут дела обстоят сложнее. PHP придется собирать из исходников, но для упрощения можно использовать менеджеры версий PHP. PHPBREW, PHPENV. Покажу на примере PHPBREW

Устанавливаем PHPPBREW:

wget https://github.com/phpbrew/phpbrew/raw/master/phpbrew
chmod +x phpbrew
mv phpbrew /usr/bin/phpbrew

Инициализируем первичные настройки:

phpbrew init

Установим директорию, куда будет собираться PHP:

nano ~/.phpbrew/bashrc
export PHPBREW_ROOT="/opt/phpbrew"
source ~/.phpbrew/bashrc

Устанавливаем пакеты зависимостей при сборке:

apt-get install gcc make libxml2-dev libssl-dev libbz2-dev libmcrypt-dev libreadline-dev libxslt1-dev autoconf libcurl4-gnutls-dev libicu-dev g++ php5-dev

 

Основные команды PHPBREW и установка PHP:

Обновление списка возможных версий

phpbrew known --update

Вывод списка возможных версий:

phpbrew known

Установка PHP с набором некоторых модулей:

phpbrew install 5.3.29 +default +mysql +gd +curl +iconv

Просмотр наборов модулей

phpbrew variants

 

 

Использование нескольких версий PHP

Изменение версии PHP для пользователя

Для каждого пользователя ISP Manager'a используется свой обработчик. На примере пользователя admin мы изменяем /var/www/admin/data/php-bin/php

nano /var/www/admin/data/php-bin/php

Нужно изменить строчку:

#!/usr/bin/php-cgi

На строчку с нужной нам версией:

#!/usr/bin/php56-cgi

 

При использовании PHPBREW путь будет примерно такой:

#!/opt/phpbrew/php/php-5.3.29/bin/php-cgi

 

Изменение версии PHP для домена

Создаем копию /var/www/admin/data/php-bin/php и меняем в копии обработчик:

cp /var/www/admin/data/php-bin/php /var/www/admin/data/php-bin/php56
chmod +w /var/www/admin/data/php-bin/php56
nano /var/www/admin/data/php-bin/php56
#!/usr/bin/php56-cgi

Теперь в нужном нам домене указываем новый обработчик. Например в домене example.com /etc/httpd/conf/vhosts/admin/example.com.
При использовании FastCGI меняем:

FCGIWrapper /var/www/admin/data/php-bin/php

На:

FCGIWrapper /var/www/admin/data/php-bin/php56

 

Для CGI корректируем:

Action application/x-httpd-php5 /php-bin/php

На:

Action application/x-httpd-php5 /php-bin/php56


В данном способе есть минус: при обновлении данных домена из панели ISP Manager'а, записи возвращаются к оригинальным

Показать комментарии ()