При использовании 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'а, записи возвращаются к оригинальным
На сервере под управлением ISP Manager уже установлены следующие версии PHP
5.2.17 (alt)
5.3.29 (alt)
5.4.45 (alt)
5.5.38 (alt)
5.6.40 (alt)
7.0.33 (alt)
7.0.33 (native)
7.1.28 (alt)
7.2.17 (alt)
7.3.4 (alt)
7.4.25 (alt)
8.0.12 (alt)
Не подскажете, как обновить библиотеку GD для версии 7.4.25 (alt)? Заранее благодарю