Centos несколько версий php

Обновлено: 01.07.2024

В предыдущей статье я написал как обновить версию PHP5 на PHP7 на сервере с операционной системой CentOS 6. В ней я так же упомянул о возможных проблемах в виде неработающих сайтов из-за несовместимости с новой версией PHP.

Задачу усложняло то, что на сервере стоит старенькая панель управления ISPmanager версии 4, в которой возможность работы с несколькими версиями PHP не предусмотрена.

Было решено, что PHP7 будет основной версией и будет работать как модуль Apache. Версия PHP5 будет подключаться в режиме PHP-CGI для тех сайтов чей код несовместим с PHP7. Все настройки для сайтов в части выбора версии PHP можно будет производить прямо из панели, без правки конфигурационных файлов Apache, PHP и .htaccess.

Режимом PHP-CGI для PHP7 я решил пожертвовать.

Исходные данные

Все приведенные ниже инструкции были опробованы на сервере с операционной системой CentOS 6.10 разрядностью 64 бита с установленной панелью управления хостингом ISPmanager-Lite версии 4.4.10.30. PHP на сервере обновлен до версии 7.3 по этой инструкции.

Как установить вторую версию PHP на CentOS6

Первым делом необходимо подключить репозиторий Remi, если он у вас еще не установлен:

Если все прошло без ошибок, то после установки репозитория, у вас появится несколько файлов remi****.repo в каталоге: /etc/yum.repos.d/.

Две версии PHP на CentOS6 с панелью управления ISPManager v4

И если там присутствует remi-safe.repo, то вам остается только проверить доступность необходимой нам версии PHP:

Устанавливаем вторую версию PHP на сервер:

Теперь на сервере будет две версии PHP, стандартная 7.3 и дополнительная 5.6, имена файлов у последней будут начинаться с PHP56.

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

Я писал выше, что решил пожертвовать режимом PHP-CGI версии 7.3 в пользу 5.6. Чтобы это осуществить выполните в консоли следующие команды:

Этими командами мы заменили вызов PHP-CGI версии 7.3 на PHP-CGI версии 5.6. При этом мы сохранили версию PHP-CGI 7.3 для возможности отмены изменений.

Теперь, когда в ISPmanager вы выбираете для сайта режим работы PHP-CGI будет работать версия PHP 5.6.

Настраивает ISPmanager 4 для работы с двумя версиями PHP

Эти настройки необязательны, но делают процесс выбора версий PHP в ISPmanager более наглядным.

меняем на подобное:

Теперь нужно перегрузить панель ISPmanager:

После чего при настройке параметров домена вы должны увидеть примерно следующее:

Две версии PHP на CentOS6 с панелью управления ISPManager v4

Результаты

В результате вышеописанных действий у нас на сервере появилась возможность использовать для сайтов две версии PHP. Одна основная 7.3 работает как модуль Apache, вторая 5.6 в режиме PHP-CGI. Выбор версий PHP для каждого домена осуществляется в панели управления ISPmanager.

Веб-сервер Apache использует виртуальные хосты для управления несколькими доменами в рамках одного сервера. Точно так же для управления несколькими версиями PHP в рамках одного сервера PHP-FPM использует специальный демон. Объединив эти возможности Apache и PHP-FPM, вы можете одновременно разместить на одном сервере несколько веб-приложений PHP, каждое из которых будет использовать индивидуальную версию PHP. Это удобно, потому что для разных приложений могут потребоваться разные версии PHP, но обычно серверные стеки (например, стандартный LAMP) могут управлять только одной версией. Сочетание Apache с PHP-FPM – экономное решение, ведь вам не придется размещать каждое приложение на отдельном сервере.

PHP-FPM также предлагает параметры для логирования stderr и stdout, аварийных перезапусков и адаптивного запуска процессов, что полезно для сайтов с высоким трафиком. Фактически связка Apache+PHP-FPM – один из лучших стеков для размещения приложений PHP, особенно когда дело касается производительности.

В этом мануале мы покажем, как запустить два сайта PHP на одном сервере. Каждый сайт будет использовать свой собственный домен, каждый домен будет развертывать свою собственную версию PHP. Первый, site1.your_domain, использует PHP 7.3; второй, site2.your_domain, использует версию PHP 7.4.

Требования

  • Сервер CentOS 8 (1GB RAM минимум), настроенный по этому мануалу.
  • Веб-сервер Apache, установить который вам поможет этот мануал.
  • Доменные имена, направленные на ваш сервер. В данном мануале мы используем два условных домена: site1.your_domain и site2.your_domain. Для каждого домена нужно создать DNS-запись А.

1: Установка PHP 7.3 и PHP 7.4

Выполнив предварительные требования к мануалу, мы можем установить PHP версий 7.3 и 7.4, а также PHP-FPM и несколько дополнительных расширений. Чтобы установить несколько версий PHP на один сервер, необходимо установить и включить репозиторий Remi. Этот репозиторий предлагает последние версии стека PHP для системы CentOS 8.

Вы можете добавить репозиторий в свою систему, используя следующую команду:

Приведенная выше команда также активирует репозиторий EPEL.

Сначала давайте узнаем, какие версии PHP 7 доступны в Remi:

sudo dnf module list php

Вы увидите такой результат:

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary

php remi-7.2 common [d], devel, minimal PHP scripting language

php remi-7.3 common [d], devel, minimal PHP scripting language

php remi-7.4 common [d], devel, minimal PHP scripting language

Теперь отключите стандартный модуль PHP и активируйте модуль PHP7.3 из Remi:

sudo dnf module reset php
sudo dnf module enable php:remi-7.3

Давайте установим php73 и php73-php-fpm:

sudo dnf install php73 php73-php-fpm -y

Теперь повторите весь процесс для PHP версии 7.4. Установите php74 и php74-php-fpm.

sudo dnf module reset php
sudo dnf module enable php:remi-7.4
sudo dnf install php74 php74-php-fpm -y

После установки обеих версий PHP запустите сервис php73-php-fpm и включите его в автозагрузку с помощью следующих команд:

sudo systemctl start php73-php-fpm
sudo systemctl enable php73-php-fpm

Затем проверьте статус сервиса php73-php-fpm с помощью следующей команды:

sudo systemctl status php73-php-fpm

Вы увидите следующий результат:

php73-php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php73-php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2020-04-22 05:14:46 UTC; 52s ago
Main PID: 14206 (php-fpm)
Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 6 (limit: 5059)
Memory: 25.9M
CGroup: /system.slice/php73-php-fpm.service
├─14206 php-fpm: master process (/etc/opt/remi/php73/php-fpm.conf)
├─14207 php-fpm: pool www
├─14208 php-fpm: pool www
├─14209 php-fpm: pool www
├─14210 php-fpm: pool www
└─14211 php-fpm: pool www
Apr 22 05:14:46 centos-s-1vcpu-1gb-nyc3-01 systemd[1]: Starting The PHP FastCGI Process Manager.
Apr 22 05:14:46 centos-s-1vcpu-1gb-nyc3-01 systemd[1]: Started The PHP FastCGI Process Manager.

Повторите этот процесс для версии 7.4; запустите сервис php74-php-fpm и добавьте его в автозагрузку с помощью следующих команд:

sudo systemctl start php74-php-fpm
sudo systemctl enable php74-php-fpm

А затем проверьте состояние сервиса php74-php-fpm с помощью следующей команды:

sudo systemctl status php74-php-fpm

Вы увидите следующий результат:

php74-php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php74-php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2020-04-22 05:16:16 UTC; 23s ago
Main PID: 14244 (php-fpm)
Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 6 (limit: 5059)
Memory: 18.8M
CGroup: /system.slice/php74-php-fpm.service
├─14244 php-fpm: master process (/etc/opt/remi/php74/php-fpm.conf)
├─14245 php-fpm: pool www
├─14246 php-fpm: pool www
├─14247 php-fpm: pool www
├─14248 php-fpm: pool www
└─14249 php-fpm: pool www
Apr 22 05:16:15 centos-s-1vcpu-1gb-nyc3-01 systemd[1]: Starting The PHP FastCGI Process Manager.
Apr 22 05:16:16 centos-s-1vcpu-1gb-nyc3-01 systemd[1]: Started The PHP FastCGI Process Manager.

Теперь на вашем сервере есть две версии PHP. После этого мы можем создать структуру каталогов для каждого сайта, который должен обслуживаться этим сервером.

2: Создание структуры каталогов для сайтов

Теперь мы создадим корневые каталоги для каждого сайта, который будет развернут на этом сервере. В нашем мануале мы развернем 2 сайта: site1.your_domain и site2.your_domain. Создавая каталоги, укажите домены ваших сайтов.

sudo mkdir /var/www/site1.your_domain
sudo mkdir /var/www/site2.your_domain

По умолчанию веб-сервер Apache запускается как пользователь и группа apache. Чтобы убедиться, что права собственности и доступа на корневые каталоги сайтов установлены верно, выполните следующие команды:

sudo chown -R apache:apache /var/www/site1.your_domain
sudo chown -R apache:apache /var/www/site2.your_domain
sudo chmod -R 755 /var/www/site1.your_domain
sudo chmod -R 755 /var/www/site2.your_domain

Команда chown передает права на каталоги сайтов пользователю apache и группе apache. Команда chmod изменяет права доступа этого пользователя и группы, а также с других пользователей в системе.

Затем внутри каждого корневого каталога мы создадим файл info.php. Позже он поможет нам отобразить информацию о версии PHP каждого веб-сайта. Начните с site1:

sudo vi /var/www/site1.your_domain/info.php

Добавьте в файл следующую строку:

<?php phpinfo(); ?>

Сохраните и закройте файл. Теперь скопируйте созданный вами файл info.php для site2:

sudo cp /var/www/site1.your_domain/info.php /var/www/site2.your_domain/info.php

Теперь у вас есть корневые каталоги, необходимые каждому сайту для обслуживания данных. Затем мы настроим свой веб-сервер Apache для поддержки двух разных версий PHP.

3: Настройка Apache для поддержки двух сайтов

В этом разделе вы создадите два файла конфигурации виртуального хоста. Это позволит двум вашим веб-сайтам одновременно работать с двумя разными версиями PHP.

Сначала создайте новый конфигурационный файл виртуального хоста для сайта site1.your_domain. Здесь мы настроим Apache для обработки контента с помощью php7.3.

Вставьте в файл такие строки. Убедитесь, что вы указали правильный путь к корневому каталогу, ServerName и версию PHP.

<VirtualHost *:80>
ServerAdmin admin@site1.your_domain
ServerName site1.your_domain
DocumentRoot /var/www/site1.your_domain
DirectoryIndex info.php
ErrorLog /var/log/httpd/site1.your_domain-error.log
CustomLog /var/log/httpd/site1.your_domain-access.log combined
<IfModule !mod_php7.c>
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/var/opt/remi/php73/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
</VirtualHost>

В DocumentRoot укажите путь к корневому каталогу вашего веб-сайта. В ServerAdmin укажите адрес электронной почты для администратора сайта your_domain. В директиве ServerName определяется URL-адрес первого поддомена. В SetHandler нужно задать файл сокета PHP-FPM для php7.3.

Сохраните и закройте файл.

Затем создайте новый конфигурационный файл виртуального хоста для сайта site2.your_domain. Этот поддомен будет обслуживаться версией php7.4.

Добавьте следующий код в файл. Убедитесь, что путь к корневому каталогу, ServerName и версия PHP соответствуют вашей конфигурации.

<VirtualHost *:80>
ServerAdmin admin@site2.your_domain
ServerName site2.your_domain
DocumentRoot /var/www/site2.your_domain
DirectoryIndex info.php
ErrorLog /var/log/httpd/site2.your_domain-error.log
CustomLog /var/log/httpd/site2.your_domain-access.log combined
<IfModule !mod_php7.c>
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/var/opt/remi/php74/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
</VirtualHost>

Сохраните и закройте файл. Затем проверьте конфигурации Apache на наличие синтаксических ошибок с помощью следующей команды:

sudo apachectl configtest

Если ошибок нет, вы увидите вывод:

Теперь можно перезапустить сервис Apache, чтобы изменения вступили в силу:

Теперь, когда мы настроили Apache для обслуживания каждого сайта, мы должны протестировать их, чтобы убедиться, что все работает правильно.

4: Тестирование настройки

Итак, мы уже настроили два веб-сайта, которые работают на двух разных версиях PHP. Давайте проверим результаты.

Откройте браузер и посетите оба сайта.

Вы увидите две страницы с информацией о PHP. Обратите внимание на заголовки этих страниц. На первой странице указано, что site1.your_domain использует PHP версии 7.3. Вторая страница сообщает, что site2.your_domain развернул PHP версии 7.4.

Теперь, когда вы проверили свои сайты, удалите файлы info.php. Они содержат конфиденциальную информацию о вашем сервере и доступны неавторизованным пользователям – следовательно, они представляют собой уязвимость системы безопасности. Чтобы удалить оба файла, выполните следующие команды:

sudo rm -rf /var/www/site1.your_domain/info.php
sudo rm -rf /var/www/site2.your_domain/info.php

Теперь у вас есть сервер CentOS 8, обслуживающий два веб-сайта с двумя разными версиями PHP.

Заключение

Здесь вы можете изучить более продвинутые функции PHP-FPM, такие как адаптивное порождение процессов или возможности логирования sdtout и stderr. Кроме того, теперь вы можете защитить свои сайты с помощью бесплатных сертификатов TLS/SSL от Let’s Encrypt.

Веб-сервер Apache использует виртуальные хосты для управления несколькими доменами в одной системе. PHP-FPM использует демона для управления несколькими версиями PHP в одной системе. Вы можете использовать Apache и PHP-FPM для одновременного хостинга на одном сервере нескольких веб-приложений PHP на основе разных версий PHP. Эта возможность полезна, поскольку разным приложениям могут требоваться разные версии PHP, но некоторые серверные комплексы, в том числе комплекс LAMP в стандартной конфигурации, могут работать только с одной версией. Сочетание Apache с PHP-FPM более экономично по сравнению с хостингом каждого приложения на отдельном экземпляре сервера.

Также PHP-FPM предлагает разные варианты конфигурации для регистрации данных stderr и stdout , аварийной перезагрузки и адаптивного создания процессов, что полезно для сайтов с высокой нагрузкой. Использование Apache с PHP-FPM — один из лучших вариантов хостинга приложений PHP, особенно с точки зрения производительности.

В этом обучающем руководстве мы настроим два сайта PHP для работы на одном экземпляре сервера. Каждый сайт будет использовать собственный домен, и на каждом домене будет использоваться собственная версия PHP. Первый с айт site1.your_domai n развернет PHP 7.0. Второй сайт site2.your_domain развернет PHP 7.2.

Предварительные требования

  • Один сервер CentOS 7 с не менее чем 1 ГБ оперативной памяти, настроенный согласно руководству Начальная настройка сервера CentOS 7, с пользователем non-root user с привилегиями sudo и брандмауэром.
  • Веб-сервер Apache, установленный и настроенный в соответствии с указаниями руководства Установка веб-сервера Apache в CentOS 7​​​.
  • Доменное имя, настроенное так, чтобы указывать на ваш сервер CentOS 7. Информацию о том, как сделать так, чтобы домены указывали на дроплеты DigitalOcean, можно найти в руководстве Создание указаний на серверы имен DigitalOcean из общих реестров доменов. Для целей настоящего обучающего модуля мы используем два субдомена, каждый из которых указан с записью A в наших настройках DNS: site1.your_domain и site2.your_domain .

Шаг 1 — Установка PHP версий 7.0 и 7.2 с помощью PHP-FPM

После выполнения предварительных требований мы установим версии PHP 7.0 и 7.2. Репозиторий SCL (Software Collections) содержит множество версий стеков PHP для систем CentOS 7. Если вам нужна абсолютно новая версия PHP, которой нет на SCL, проверьте remi PPA (персональные архивы пакетов).

Начнем с установки репозитория SCL в вашу систему:

Сначала узнаем, какие версии PHP 7 доступны в SCL:

Вывод будет выглядеть следующим образом:

Вы заметите, что доступна также новейшая версия, PHP 7.3. Но в наших примерах мы установим версии 7.0 и 7.2.

Начнем с более ранней версии. Установите rh-php70 и rh-php70-php-fpm ​​​:

  • rh-php70 — это метапакет, который запускает приложения PHP.
  • rh-php70-php-fpm ​​​ предоставляет интерпретатор Fast Process Manager, который работает как демон и принимает запросы Fast/CGI.

Повторите процедуру для PHP версии 7.2. Установите rh-php72 и rh-php72-php-fpm ​​​.

Далее запустите следующие команды для начала использования обеих коллекций Software Collections:

По умолчанию обе версии PHP прослушивают порт 9000 . Но в этом обучающем руководстве мы хотим запустить две версии одновременно. Поэтому назначим два новых порта:

Сейчас вы назначили выделенный порт для каждой из ваших служб PHP. Перед выполнением этих изменений необходимо, тем не менее, добавить порты в вашу конфигурацию SELinux.

Теперь вы готовы запустить и активировать ваши службы PHP. Начнем со службы rh-php70-php-fpm и активируем ее запуск во время загрузки:

Затем проверьте статус службы rh-php70-php-fpm :

Вывод будет выглядеть следующим образом:

Повторите эту процедуру, запустите службу rh-php72-php-fpm и активируйте ее запуск во время загрузки:

Затем проверьте статус службы rh-php72-php-fpm :

Другой вывод будет выглядеть следующим образом:

Мы установили на сервере две версии PHP. Теперь создадим структуру каталогов для каждого сайта, который будем развертывать.

Шаг 2 — Создание структур каталогов для обоих сайтов

В этом разделе мы создадим корневой каталог документов и страницу индекса для каждого из двух сайтов.

Вначале создайте корневые каталоги документов для site1.your_domain и site2.your_domain :

По умолчанию веб-сервер Apache работает как пользователь apache и группа apache . Поэтому /var/www/ и все его файлы и подкаталоги также должны принадлежать им. Запустите следующие команды для проверки правильности владения и разрешений корневых каталогов вашего веб-сайта:

Команда chown меняет владельца двух каталогов веб-сайта на пользователя apache и группу apache . Команда chmod меняет разрешения, связанные с этим и другими пользователями и группами.

Далее вы создадите файл info.php в корневом каталоге каждого сайта. В нем будет отображаться информация о версии PHP для каждого сайта. Начнем с site1 :

Добавьте следующую строку:

Сохраните и закройте файл. Скопируйте созданный файл info.php в site2 :

Теперь на вашем веб-сервере имеются корневые каталоги документов, которые требуются каждому сайту для предоставления данных посетителям. Далее мы настроим веб-сервер Apache для работы с двумя разными версиями PHP.

Шаг 3 — Настройка Apache для обоих сайтов

В этом разделе мы создадим два файла конфигурации виртуального хоста. Это позволит двум нашим сайтам одновременно работать с двумя разными версиями PHP.

Вначале создайте новый файл конфигурации виртуального хоста для сайта site1.your_domain . Здесь вы предписываете Apache использовать для рендеринга содержимого PHP 7.0:

Добавьте в файл следующее: Убедитесь, что путь к каталогу сайта, имя сервера, порт и версия PHP соответствуют вашей настройке:

Для DocumentRoot вы указываете путь корневого каталога вашего веб-сайта. Для ServerAdmin вы добавляете адрес электронной почты, к которому имеет доступ администратор сайта your_domain . Для ServerName вы добавляете url для вашего первого субдомена. Для SetHandler вы указываете порт 9002 . Остальные директивы также настраивают вашу службу для развертывания PHP 7.0.

Сохраните и закройте файл.

Теперь создайте новый файл конфигурации виртуального хоста для сайта site2.your_domain . Для этого субдомена мы будем развертывать PHP 7.2:

Добавьте в файл следующее: Убедитесь, что путь к каталогу сайта, имя сервера, порт и версия PHP соответствуют уникальным параметрам вашей системы:

Сохраните файл и закройте его после завершения. Проверьте файл конфигурации Apache на наличие синтаксических ошибок:

Вы увидите вывод с текстом Syntax OK :

Перезапустите службу Apache, чтобы применить изменения:

Мы настроили Apache для обслуживания каждого из сайтов и теперь протестируем их и убедимся, что на них работают правильные версии PHP.

Шаг 4 — Тестирование сайтов

Мы настроили два сайта для работы с двумя разными версиями PHP. Теперь проверим результаты.

Информационная страница
PHP 7.0 Информационная страница PHP 7.2

Обратите внимание на заголовки. На первой странице указано, что на сайте site1.your_domain развернута версия PHP 7.0. На второй странице указано, что на сайте site2.your_domain развернута версия PHP 7.2.

Мы протестировали сайты и теперь можем удалить файлы info.php . Эти файлы представляют собой угрозу безопасности, поскольку они содержат важную информацию о вашем сервере и при этом доступны неуполномоченным пользователям. Удалите файлы:

Теперь у вас имеется один сервер CentOS 7, обслуживающий два сайта с двумя разными версиями PHP. Однако PHP-FPM можно применять и для других целей.

Заключение

Мы объединили виртуальные хосты и PHP-FPM для обслуживания нескольких сайтов и нескольких версий PHP на одном сервере. Количество сайтов PHP и версий PHP, которые может обслуживать ваш сервер Apache, зависит исключительно от вычислительной мощности сервера.

Теперь вы можете рассмотреть возможность изучения более расширенных функций PHP-FPM, например порождение процесса или правил регистрации sdtout и stderr ​​​​​. Или же теперь вы можете защитить свои веб-сайты. Для этого используйте наш обучающий модуль по защите сайтов с помощью бесплатных сертификатов TLS/SSL от Let’s Encrypt.


Проблема “ хочу новую версию %software% на моем стареньк … стабильном Debian/CentOS…” так же стара, как *nix-мир. Способов добиться желаемого хватает. Есть масса решений как притащить в систему несколько версий одного и того же софта. Но дальше хочется не просто иметь ещё одну версию, но и управлять тем, какая из версий доступна в системе по умолчанию, для конкретных приложений или пользователей.

Что делать, если хочется сменить системную версию PHP на одну из кастомных сборок? Давайте отталкиваться от того, что у вас на сервере уже установлено несколько версий PHP и вы хотите, чтобы в консоли команда php была конкретной версии, отличающаяся от той, что шла с системой. В этой статье я расскажу, как правильно это настроить, чтобы не было проблем с будущими пакетными обновлениями.

В качестве примера возьмём сервер на CentOS 7, где установлен родной PHP:

Также на сервере установлен наш Plesk с парой своих сборок PHP:

Допустим, мы хотим переключить систему на использование PHP 5.6 по умолчанию (переключать глобально PHP с версии 5.4 на 7 как-то сс… страшно — чему-то в системе может поплохеть от такого). Бинарь PHP 5.6 лежит у нас тут:

Как же сделать так, чтобы система использовала эту, нужную нам, версию PHP?

Сначала посмотрим на системную переменную PATH

В ней перечислен список директорий, в которых ищутся программы по имени. Главный нюанс — поиск в директориях происходит последовательно и используется первый найденный результат. Текущий путь до текущего бинарника PHP мы можем увидеть с помощью команды:

Как видно из PATH , /usr/local/bin находится в списке раньше, чем /usr/bin . Значит, если мы поместим ссылку на альтернативную версию PHP “пораньше”, в /usr/local/bin , то именно она и будет использоваться при вызове команды php вместо /usr/bin/php . Мы можем создать эту ссылку руками (и всё даже будет работать), но правильнее использовать специально созданную для этих целей утилиту update-alternatives (в CentOS это просто alternatives , но есть симлинка update-alternatives , поэтому дальше будем оперировать именно этой командой, как универсальной для Debian/Ubuntu/CentOS/и т.д.).

Теперь, давайте зарегистрируем все доступные версии PHP с помощью этой команды:

Цифры 10, 20 и 30 — это приоритет. Он работает для автоматического выбора, если администратор сам не выбрал конкретную версию. Самое большое число определяет выбор "по умолчанию".

Проверим, что php теперь указывает на созданную командой симлинку:

Давайте разберемся, что же update-alternatives сделала для нас:

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

То есть, мы успешно настроили группу PHP в update-alternatives , где по умолчанию в автоматическом режиме выбран системный PHP. Сейчас у нас есть возможность переключить команду PHP на любую другую версию..

Давайте переключимся на PHP версии 5.6, которая идет в поставке с Plesk'ом:

Проверяем, что переключение произошло:

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

С помощью update-alternatives можно выбирать не только версию PHP, но и многие другие вещи, например разные версии phpunit или редактор по умолчанию в системе. Подход этот универсален для различных систем. Не изобретая своего велосипеда, используя существующие инструменты, вы можете быть уверенным, что не устроили для ваших коллег квеста “Ну почему оно так работает?!”. Настраивайте свою систему правильно.

Читайте также: