Thank you for reading this post, don't forget to subscribe!
Если у вас установлено несколько версий php в системе, то при вызове команды php в консоли, будет использоваться одна из них. Иногда необходимо для каких-то скриптов или сервисов управлять версией php в консоли
Имеется 2 версии php — 5.6 и 7.0. Для начала проверим, какая версия используется в данный момент:
1 2 3 4 5 6 |
# php -v PHP 7.0.19-1 (cli) (built: May 11 2017 14:04:47) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.19-1, Copyright (c) 1999-2017, by Zend Technologies |
Посмотрим, где располагается сам бинарник php:
1 2 |
# which php /usr/bin/php |
Оказывается, что /usr/bin/php является символьной ссылкой. Посмотрим, куда она ведет:
1 2 |
# ls -l /usr/bin/php /usr/bin/php -> /etc/alternatives/php |
Это еще одна символьная ссылка. Смотрим, куда ведет она:
1 2 |
# ls -l /etc/alternatives/php /etc/alternatives/php -> /usr/bin/php7.0 |
На седьмую версию php. Заменим ее на 5.6, которая у меня установлена по адресу /usr/local/bin/php. Редактируем символьную ссылку:
1 |
# ln -f -s /usr/local/bin/php /etc/alternatives/php |
Проверяем текущую версию php в консоли:
1 2 3 4 5 |
# php -v PHP 5.6.16 (cli) (built: Jun 22 2017 20:29:25) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies |
Все получилось. Теперь в консоли по-умолчанию будет использоваться нужная версия php. Можно проверять скрипты, не указывая полный путь к нужной версии.
Можно было поступить и по-другому. При вызове php в консоли, имя проверяется в переменной $PATH. Посмотреть ее значения можно командой:
1 2 |
# echo $PATH /usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin |
Директории проверяются в том порядке, как они перечислены. Где будет найдено первое совпадение, тот файл и будет использоваться. В моем случае директория /usr/bin, где жила символьная ссылка на php7.0 стоит раньше, чем /usr/local/bin, где расположена php5.6. Можно было просто поменять местами эти директории в PATH и версия по-умолчанию станет 5.6, так как ее бинарник php будет найден раньше.
Более гибко управлять версиями php в системе можно с помощью программы update-alternatives. Она может делать в том числе и то, что мы сейчас проделали, только автоматически, в зависимости от своих настроек. С ее помощью можно более гибко управлять версиями, задавать приоритеты использования той или иной версии, быстро их переключать в полуавтоматическом режиме.