В деяких ситуаціях потрібно тримати декілька версій php в системі. Звісно, краще використовувати docker для окремих проектів, але іноді необхідно оптимізувати навантаження і використовувати локальне оточення для розробки.
Отже у попередніх дописах я вже розповідав, як ми можемо встановити дві версії php
Тепер навчимося перемикатися між ними.
1. Первіряємо поточну версію:
php -v
Відповідь буде приблизно така:
PHP 8.3.3-1+ubuntu22.04.1+deb.sury.org+1 (cli) (built: Feb 15 2024 18:38:52) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.3, Copyright (c) Zend Technologies
with Zend OPcache v8.3.3-1+ubuntu22.04.1+deb.sury.org+1, Copyright (c), by Zend Technologies
2. Дивимось усі доступні версії:
sudo update-alternatives --list php
Мій результат:
/usr/bin/php7.4
/usr/bin/php8.3
3. Змінюємо версію php:
sudo update-alternatives --set php /usr/bin/php7.4
І перевіряємо версію знову:
php -v
Що ж, ось і результат:
PHP 7.4.33 (cli) (built: Sep 2 2023 08:03:46) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies
Тепер ми можемо змінити додаткові параметри, якщо потрібно:
sudo update-alternatives --set phar /usr/bin/phar7.4
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.4
sudo update-alternatives --set phpize /usr/bin/phpize7.4
sudo update-alternatives --set php-config /usr/bin/php-config7.4
Ну і не забуваємо перезавантажити сервер:
sudo service apache2 restart
Ну і подивитися яка саме версія активна можна так:
sudo update-alternatives --config php
Результат. Доречі, якщо я поствлю 0 у данному випадку, то версія знову зміниться на 8.3 :
Є 2 варіянти для альтернативи php (надає /usr/bin/php).
Вибірк Шлях Пріор Стан
------------------------------------------------------------
0 /usr/bin/php8.3 83 автоматичний режим
* 1 /usr/bin/php7.4 74 ручний режим
2 /usr/bin/php8.3 83 ручний режим
Натисніть <enter> щоб підтвердити поточний вибір[*], або наберіть номер варіанту:
Існують кейси, коли така зміня версій може призвести до конфліктів, тому існує більш дієвий варіант:
sudo a2dismod php7.4
sudo a2enmod php8.3
sudo systemctl start php8.3-fpm
sudo systemctl enable php8.3-fpm
sudo a2disconf php7.4-fpm
sudo service apache2 restart
Зупиняємо одну версію і вмикаємо іншу.