поменять версию php в консоли
Жонглируем версиями PHP в системе
Проблема “ хочу новую версию %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 мы можем увидеть с помощью команды:
Теперь, давайте зарегистрируем все доступные версии PHP с помощью этой команды:
Цифры 10, 20 и 30 — это приоритет. Он работает для автоматического выбора, если администратор сам не выбрал конкретную версию. Самое большое число определяет выбор «по умолчанию».
Проверим, что php теперь указывает на созданную командой симлинку:
Давайте разберемся, что же update-alternatives сделала для нас:
Как видно, она создала цепочку симлинок и теперь по требованию просто меняет промежуточную симлинку на нужный нам бинарь.
Давайте переключимся на PHP версии 5.6, которая идет в поставке с Plesk’ом:
Проверяем, что переключение произошло:
Все отлично работает. Теперь в системе используется нужная нам версия PHP и я не опасаюсь, что эта настройка слетит при следующих пакетных обновлениях.
С помощью update-alternatives можно выбирать не только версию PHP, но и многие другие вещи, например разные версии phpunit или редактор по умолчанию в системе. Подход этот универсален для различных систем. Не изобретая своего велосипеда, используя существующие инструменты, вы можете быть уверенным, что не устроили для ваших коллег квеста “Ну почему оно так работает?!”. Настраивайте свою систему правильно.
Как изменить версию PHP на хостинге
Изменение текущей версии PHP может понадобиться в некоторых случаях. Ниже разберем, как поменять версию, когда это нужно, и какую именно версию PHP лучше выбрать. Также разберем, как менять версию интерпретатора в коммерческих панелях управления (cPanel, ISPmanager и Plesk), и на самых популярных хостингах с панелями собственной разработки.
Какие версии PHP сейчас актуальны и зачем менять
На данный момент (2018 год) актуальны следующие версии интерпретатора PHP:
Переходить на 7-ю ветку PHP однозначно стоит, если используете современную CMS (например, Drupal 8) или framework (например, Laravel 5.5 и выше). Также многие даже не очень свежие скрипты и приложения могут требовать минимум php5.4.
Еще одной причиной перехода на последние версии PHP может быть, написание или использование CLI (консольных) php-приложений, когда нет необходимости поддерживать обратную совместимость.
Изменение версии PHP в коммерческих панелях управления
cPanel
В панели cPanel всё очень просто (не зря большинство хостеров в мире используют именно ее). После логина, ищем раздел «Programming», там кликаем на иконку «PHP Config», в открывшемся окне выбираем нужную версию и сохраняем.
ISPManager
В панели ispmanager после входа идем в боковое меню, раздел «WWW». Далее выбираем пункт «WWW-Домены», отмечаем нужный нам домен и нажимаем кнопку «Изменить» сверху. На открывшейся странице ищем раздел «Дополнительные возможности», там строка «Версия PHP». И через выпадающий список задаем нужную версию. Для сохранения изменения не забудьте нажать кнопку «ОК». Для примера была взята панель хостинга SmartApe.
Parallels Plesk
Переходим в раздел «Сайты и домены». Далее «Смена версии PHP», и выбираем нужную версию.
Изменение версии PHP на популярных хостингах с собственной панелью
TimeWeb
Перейти на Таймвебе «Главное меню (боковое) – Сайты – Выбрать нужный сайт – нажать зеленую кнопку с шестеренкой напротив сайта – в раскрывающемся списке выбрать версию PHP».
На данный момент доступны следующие версии: 5.3, 5.4, 5.6, 7.0, 7.1. Рекомендуем выбирать или 5.6 или 7.1.
Beget
У Бегета доступны версии PHP: 5.2, 5.3, 5.6, 7.0, 7.1, 7.2. Рекомендуем использовать или php5.6, или php7.2.
Обратите внимание, у этого хостера можно не только выбрать версию php для сайта, но и прямо из панели (в том же окне, что и настройка версии) можно задать необходимые директивы для файла php.ini. В некоторых случаях это может быть очень полезно.
SprintHost
Чтобы сменить версию PHP у компании СпринтХост, в главном боковом меню перейдите в раздел «Сайты и домены – Управление сайтами». Выберите нужные вам домены (нужно установить галочку) и из формы под списком доменов выберите нужную версию PHP. Нажмите кнопку «Применить для сохранения».
SprintHost предоставляет следующие версии интерпретатора: 5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2 – завидное разнообразие! К выбору рекомендуем 5.6 или 7.2
Webhost1
Для управления версией PHP у ВебХост1 нужно войти в «хостинг-панель» (да-да, у них раздельные панели управления хостингом и биллингом!). В панели управления перейти в раздел «Домены». В таблице с перечнем ваших доменов, в строке с нужным вам найдите ссылку «Настройки» и нажмите её. На появившейся странице выберите нужную версию PHP и нажмите кнопку «Изменить настройки».
У Webhost1 доступны всего 3 версии PHP: 5.3, 5.6 и 7.1. По умолчанию на новых аккаунтах будет использоваться php 7.1.
HostLand
В Хостлэнде для смены PHP в главном меню выберите раздел «Домены». Затем в выпадающем списке напротив нужного домена установите нужную версию языка и нажмите рядом синюю кнопку с дискеткой для сохранения настроек.
Hostland позволяет выбрать PHP 5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2. Мы рекомендуем использовать версии 5.6 и 7.2.
Изменение текущего PHP на VPS/VDS-сервере в консоли
Что это значит и зачем нужно
Иногда бывают ситуации, когда для выполнения консольных php-команд вам нужна версия PHP отлична от текущей.
Проверить, какие версии установлены на сервере можно так:
Тут видно, что на данный момент у нас текущая версия php для консоли 5.6.
Проверяем путь запуска cli-php:
Текущая дефолтная версия задается через /usr/local/bin/php – это символическая ссылка. Узнать на какую именно версию ведет эта ссылка просто:
Как изменить
Предположим, что нам нужно изменить версию 5.6 на 7.2. Для этого нам нужно просто переназначить ссылку /usr/bin/php на /opt/php72/bin/php. Делается это командой:
Как сменить версию PHP
Панель управления FASTPANEL ® позволяет применять альтернативные версии php индивидуально для каждого сайта.
Вы можете применить к Вашему сайту любую версию php начиная с версии 5.2.
PHP 5.2 недоступна на некоторых новых ОС, в частности на Ubuntu 20.04 и CentOS 8
В этой статье рассматриваются следующие вопросы:
Смена версии php для сайта на примере версии php 7.4
1. П ерейдите в боковой панели в меню “Настройки” → “Приложения”:
2. Найдите приложение php74, нажмите на иконку “Установить” и до ждитесь завершения установки:
3. Откройте карточку сайта, для которого требуется переключить версию PHP:
4. В карточке сайта откройте раздел «Настройки«:
5. Выполните следующие действия:
Вместо FastCGI можно также выбрать режим PHP-FPM или CGI, но в 95% случаев подходит именно FastCGI. Подробнее режимы работы PHP рассматриваются в следующей статье.
Для проверки можно создать в корневом каталоге Вашего сайта файл info.php с содержимым:
После чего обратитесь к данному файлу через браузер: http://example.com/info.php
Если все сделано правильно, откроется страница с технической информацией о версии php 7.4
После проверки обязательно удалите этот файл из корневой директории сайта.
Как сменить версию PHP (CLI) для пользователя
Панель управления FASTPANEL ® позволяет переключать версии PHP для каждого пользователя в отдельности. Это действие позволит обращаться к альтернативной версии PHP в командной строке с помощью обычной команды php.
Это действие повлияет только на версию PHP в командной строке, а также на задания в планировщике crontab. Версии PHP, подключенные к сайтам, останутся неизменными.
Для переключения версии PHP для пользователя следует перейти в раздел «Пользователи«, там открыть параметры нужного пользователя и выбрать подходящую версию через в параметре «Версия PHP (CLI)«:
После изменения этого параметра следует установить новое SSH-соединение с сервером. В ранее открытых сессиях версия PHP останется прежней.
Как обратиться к альтернативной версии PHP через командную строку (CLI)
Как правило, для запуска скриптов через командную строку используется команда следующего вида:
в таком случае будет использоваться основная серверная версия PHP, даже если для сайта выбрана альтернативная версия.
Если ранее версия PHP была изменена согласно инструкции «Как сменить версию PHP (CLI) для пользователя», то обычная команда php будет использовать не основную серверную версию PHP, а выбранную в настройках пользователя.
Чтобы запустить скрипт через альтернативную версию, следует изменить команду php на полный путь до альтернативного интерпретатора. В случае с PHP 7.4 это будет /opt/php74/bin/php, то есть команда уже будет выглядеть так
пример запуска скрипта через стандартный и альтернативный интерпретаторы:
Как запускать скрипт через альтернативную версию PHP в планировщике crontab
Как правило, для запуска скриптов через планировщик crontab используется команда следующего вида:
в таком случае будет использоваться основная серверная версия PHP, даже если для сайта выбрана альтернативная версия.
Если ранее версия PHP была изменена согласно инструкции «Как сменить версию PHP (CLI) для пользователя», то обычная команда php будет использовать не основную серверную версию PHP, а выбранную в настройках пользователя.
Пример добавления задания на запуск скрипта раз в минуту с помощью альтернативной версии PHP 7.4:
Как изменить версию php в консоли
Если у вас установлено несколько версий php в системе, то при вызове команды php в консоли, будет использоваться одна из них. Иногда необходимо для каких-то скриптов или сервисов управлять версией php в консоли. Я расскажу, как ее изменить.
Посмотрим, где располагается сам бинарник php:
Оказывается, что /usr/bin/php является символьной ссылкой. Посмотрим, куда она ведет:
Это еще одна символьная ссылка. Смотрим, куда ведет она:
На седьмую версию php. Заменим ее на 5.6, которая у меня установлена по адресу /usr/local/bin/php. Редактируем символьную ссылку:
Проверяем текущую версию php в консоли:
Все получилось. Теперь в консоли по-умолчанию будет использоваться нужная версия php. Можно проверять скрипты, не указывая полный путь к нужной версии.
Директории проверяются в том порядке, как они перечислены. Где будет найдено первое совпадение, тот файл и будет использоваться. В моем случае директория /usr/bin, где жила символьная ссылка на php7.0 стоит раньше, чем /usr/local/bin, где расположена php5.6. Можно было просто поменять местами эти директории в PATH и версия по-умолчанию станет 5.6, так как ее бинарник php будет найден раньше.
Более гибко управлять версиями php в системе можно с помощью программы update-alternatives. Она может делать в том числе и то, что мы сейчас проделали, только автоматически, в зависимости от своих настроек. С ее помощью можно более гибко управлять версиями, задавать приоритеты использования той или иной версии, быстро их переключать в полуавтоматическом режиме.