Update\Downgrade php in Ubuntu
У цій статті ми будемо оновлювати та понижати версії php на системі Ubuntu 20.04, на відміну від системи CentOS 7, щоб змінити версію php необов’язково її видаляти.
Це зв’язано з тим що Ubuntu при додаванні php у свій список, система також оновлює файл альтернативних версій, які ми також згадаємо у кінці статті. Також тут буде метод з видаленням php повністю.
!!Попередження, видалення старої версії php може спричинити несправність phpmyadmin, та інших програм які потребують конкретну версію php.
Підготовка
1. Потрібно оновити списки репозиторіїв, це робиться командою.apt-get update
Оновлювати обов’язково, тому що якщо цього не зробити, то система може не знайти пакет який потрібно встановити
2. Встановлення менеджеру репозиторіїв.apt install software-properties-common
Без нього не вийде додати репозиторій з php.
3. Додаємо сам репозиторійadd-apt-repository ppa:ondrej/php
Воно потребує натиснути [ENTER], тиснемо його.
Після чого знову повторюємо перший пункт.
Готово ми підготували систему до оновлення, php.
Оновлення
Для початку нам потрібно дізнатися яка у нас встановлена версія та модулі.
1. php -v
:Показує встановлену версію php
2. php -m
:Показує встановлені модулі у встановленої/вибраної версії php.
Ви побачите подібний список, скопіюйте його, це потрібно щоб знати яких модулів не вистачає у новій версії для роботи сайту або програми.
Варіанти оновлення версії php.
1. Оновлення до останньої версії php.
Для цього потрібно видалити повністю стару версію phpapt-get remove php5.6*
Ця команда повністю видалить php 5.6 та її модулі.
!! Попередження, цей метод також може видалити apache2, тому що він входить у список залежностей php на Ubuntu, через що сайти перестануть повністю робити.
Після чого потрібно встановити нову версіюapt-get install php
Ця команда встановить останню версію php з базовими модулями.
Тому потрібно встановлювати модулі яких не вистачає окремо.apt-get install php-модуль1 php-модуль2 .....
На момент написання цього тексту остання версія php 8.2
Після встановлення перевірте чи все встановилось коректно командою php -v
Як ми бачимо у нас все встановилось правильно.
1.2.Також можна скористатися командоюapt upgrade php
але це оновить тільки базову версію без модулів.
Оновити повністю версію командоюapt upgrade php*
не вийде, тому що буде помилка з конфліктом пакетів через те що деяких модулів немає на новій версії php або вони конфліктують між собою.
Тому потрібно вручну ставити модулі яких не вистачає. apt-get install php-модуль1 php-модуль
2 .....
2. Встановлення конкретної версії php.
Для цього потрібно видалити стару версію php.apt-get remove php5.6*
Ця команда видалить повністю версію php та її модулі.
Щоб встановити конкретну версію потрібно ввести командуapt-get install php7.4 php7.4-назва модуля1 php7.4-назва модуля2...
Де 7.4 це версія php.
Пониження
Тут принцип аналогічний з оновленням
Видалення старої версіїapt-get remove php7.4*
та встановлення нової версії.
Щоб встановити конкретну версію потрібно вказати командуapt-get install php5.6 php5.6.-назва модуля1 php5.6-назва модуля2...
Де 5.6 це версія php.
Якщо потрібно декілька версій php, або самий безпечний спосіб зміни версії php на потрібну.
В цьому методі працювати буде одна з встановлених версій якщо в конфігураціях самої програми не прописаний шлях до конкретної версії php.
Для цього методу нам потрібно встановити відразу дві версії php.apt-get install php5.6 && apt-get install php7.4
Так ми встановили php5.6 та php7.4.
Щоб перемикатись між версіями php потрібно ввести командуupdate-alternatives --config php
В цьому списку, щоб вибрати потрібну версію потрібно написати число де, наприклад 1 = php5.6, 2 = php7.4 ...
Так можна перемикатися між версіями php.
Для перевірки версій використовуйте команду php -v
Якщо Ви використовуєте apache, то також потрібно вимикати версії php в самому apache командоюa2dismod php5.6
та вмикатиa2enmod php7.4
Після зміни версії php завжди потрібно перезапускати apache, щоб зміни прийнялися.systemctl restart apache2 або service apache2 restart
Готово тепер ми змінили версію php на потрібну нам.
Зноски
Знак ( * ) в команді значить що команда буде шукати всі співпадіння в назві пакетів через що не рекомендується використовувати командуapt-get remove php*
тому що це видалить не тільки php, а ще й phpmyadmin та інші пакети назви яких розпочинаються на php.
Знаки && потрібні, щоб виконувати команди послідовно одна за однією.
Команда 1 && команда 2 і т.д.
No Comments