GrabDuck

Несколько версий PHP и обновление PHP в ISP Manager | Небольшой Блог Системного ...

:

Довольно частая задача стоит при использовании ISP Manager — это обновление версии PHP до более актуальной или параллельное использование нескольких версий PHP в режиме FastCGI/CGI для разных пользователей или да же сайтов. Подобная инструкция подойдет не только при использовании ISP Manager, но и без него, при ручной настройке WEB-сервера.

В последних версиях ISP Manager 5 научился менять версию PHP из панели управления. Но если вы желаете свою особенную версию со своим набором модулей, то этот способ подходит.

Обновление версии PHP в Centos.

Обновление PHP или установка будут производиться из репозитория Remi, поэтому произведем его подключение.

Centos 5

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

Centos 6

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

Centos 7

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

После установки пакета нужной версии репозитория, у Вас появится соответствующий файл: /etc/yum.repos.d/remi.repo

Теперь необходимо включить нужную версию PHP. Для этого редактируем /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=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
 
[remi-php55]
name=Les RPM de remi de PHP 5.5 pour Enterprise Linux 6 - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/6/php55/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/6/php55/mirror
# WARNING: If you enable this repository, you must also enable "remi"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
 
[remi-php56]
name=Les RPM de remi de PHP 5.6 pour Enterprise Linux 6 - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/6/php56/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/6/php56/mirror
# WARNING: If you enable this repository, you must also enable "remi"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
[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=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php55]
name=Les RPM de remi de PHP 5.5 pour Enterprise Linux 6 - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/6/php55/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/6/php55/mirror
# WARNING: If you enable this repository, you must also enable "remi"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php56]
name=Les RPM de remi de PHP 5.6 pour Enterprise Linux 6 - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/6/php56/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/6/php56/mirror
# WARNING: If you enable this repository, you must also enable "remi"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

На примере Centos 6, где по умолчанию предоставляется версия PHP 5.3, для обновления до 5.4 достаточно установить enabled=1 в главной секции [remi].

[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
[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

После чего выполняем команду:

и наслаждаемся новой версией PHP. Для работы с apache mod_php этот способ так же работает.
Если нужно обновить версиюю до 5.5, то включаем ветку remi-php55 и снова одновляем php. Для версии 5.6 аналогично.

Из данного репозитория можно обновить так же mysql, phpmyadmin и т.д.
При обновлении phpmyadmin, у Вас могут возникнуть проблемы в его работе, из за того, что с новым пакетом обновляется файл /etc/httpd/conf.d/phpmyadmin.conf, где указывается не полный параметр php_admin_value open_basedir
Поэтому редактируем его к виду

php_admin_value open_basedir "/usr/share/phpMyAdmin/:/etc/phpMyAdmin/:/var/lib/phpMyAdmin/:/tmp/:/usr/share/php/:/var/lib/php/session/:/usr/share/doc/"
php_admin_value open_basedir "/usr/share/phpMyAdmin/:/etc/phpMyAdmin/:/var/lib/phpMyAdmin/:/tmp/:/usr/share/php/:/var/lib/php/session/:/usr/share/doc/"

Добавляя запись /usr/share/doc/

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

В Ubuntu процесс аналогичен. Для простоты обновления используем репозиторий от Ondrej
Конечно же, можно собрать новую версию из исходников, но зачем усложнять жизнь.

Для версии 5.4 добавляем репозиторий:

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

Для версии 5.5:

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

Для версии 5.6:

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

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

Если у Вас отсутствует add-apt-repository. Устанавливаем пакет:

apt-get install software-properties-common
apt-get install software-properties-common

Установка нескольких версий PHP в Centos

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

Подключаем репозиторий Remi как описано выше и включаем нужную вертку.
Теперь, чтобы установить новую версию PHP паралельно уже используемой, необходимо использовать имена пакетов с номером версии. Т.е. в репозитории лежат пакеты с именами php55, php56. К примеру, чтобы установить 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
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

Установленная версия будет лежать паралельно со стандартным PHP, но исполнительные файлы называются как PHP56 и т.д.

Установка нескольких версий PHP в Ubuntu

Здесь дела обстоят хуже. Нужную версию PHP придется собирать из исходников. Но для упрощения этого процесса, можно воспользоваться специальными менеджерами версий PHP: PHPBREW, PHPENV. Лично мне понравился PHРBREW и использую собраную им версию PHP для некоторых проектов. Использование PHPBREW оставим на самостоятельное изучение. Приведу лишь пример установки:

1. Устанавливаем PHPBREW:

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

2. Инициализируем начальные настройки:

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

export PHPBREW_ROOT="/opt/phpbrew"
export PHPBREW_ROOT="/opt/phpbrew"

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

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
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

5. Основные команды PHPBREW и установка PHP:
— обновление списка возможных для установки версий

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

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

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

— просмотр возможный наборов модулей

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

Теперь о самом главном: как же использвать установленные нами версии в ISP Manager.
Обязательным условием является использование, для созданого домена, FastCGI или просто CGI режима работы PHP.
В ISP есть несколько путей подключения нужной версии:

1) Замена php обработчика для вех сайтов пользователя ISP Manager.

Для каждого из пользователей ISP Manager, создается свой собственны обработчик. Следовательно, на примере пользователя admin, мы редактируем:

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

меняем сожержимое

указывая новую версию обработчика PHP

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

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

2) Замена 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
vim /var/www/admin/data/php-bin/php56
cp /var/www/admin/data/php-bin/php /var/www/admin/data/php-bin/php56
chmod +w /var/www/admin/data/php-bin/php56
vim /var/www/admin/data/php-bin/php56
chmod -w /var/www/admin/data/php-bin/php56
chmod -w /var/www/admin/data/php-bin/php56

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

При использовании FastCGI изменяем:

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

на

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

При использовании CGI, меняем:

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

на

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

Единственный недостаток этого метода — при обновлении данных домена из панели ISP Manager, записи меняются на оригинальные.

VN:F [1.9.22_1171]

Рейтинг: 9.5/ 10 (4 голоса(ов))

Несколько версий PHP и обновление PHP в ISP Manager, 9.5 out of 10 based on 4 ratings