Как да инсталирате/надстроите PHP 8.2 на Debian и Ubuntu системи

От WIKI-TONI
Направо към навигацията Направо към търсенето


Какво е новото и промененото в PHP 8.2

PHP 8.2 носи здравословен списък от нови функции за сигурност и производителност, както и няколко отхвърляния, които могат да излъчват допълнителни предупреждения за съществуващи наследени системи, тъй като отхвърля динамичните свойства, заедно с няколко други отхвърляния.

Забележителни промени в разширението и INI

PHP 8.2 не включва никакви забележими промени, които трябва да повлияят на процеса на инсталиране или надграждане. PHP 8.2 всъщност добавя ново разширение, наречено random, но това разширение винаги е пакетно разширение и PHP не може да бъде компилиран без него.

Една забележителна промяна в INI настройките и файловете на PHP е, че PHP 8.2 излъчва предупреждение при неправилно форматирани INI настройки, които бяха заглушени в старите версии на PHP. Вижте PHP 8.2: Предупреждения за INI анализ за повече информация.

Предупреждение: 
Предстоят потенциално разрушителни действия
Следните действия се изпълняват като sudo изискват това ниво на разрешения, за да продължат. 
Обичайните предупреждения при извършване на системни промени важат и тук. 
Уверете се, че архивирате системата и проверете резервните копия, преди да продължите.

Ubuntu

sudo dpkg -l | grep php | tee packages.txt
sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt update
sudo apt install php8.2,php8.2-cli,php-8.2{bz2,curl,mbstring,intl}

sudo apt install php8.2-fpm
# OR
# sudo apt install libapache2-mod-php8.2

sudo a2enconf php8.2-fpm

# When upgrading from older PHP version:
sudo a2disconf php8.1-fpm

## Remove old packages
sudo apt purge php8.1*

Debian

sudo dpkg -l | grep php | tee packages.txt

sudo apt install apt-transport-https lsb-release ca-certificates wget -y
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg 
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update

# Expand the curly braces with all extensions necessary.
sudo apt install php8.2 php8.2-cli php8.2-{bz2,curl,mbstring,intl}

sudo apt install php8.2-fpm
# OR
# sudo apt install libapache2-mod-php8.2

sudo a2enconf php8.2-fpm

# When upgrading from older PHP version:
sudo a2disconf php8.1-fpm

## Remove old packages
sudo apt purge php8.1*

Подробно ръководство

1. Избройте и съхранете списъка с PHP разширения

Следващата команда изброява всички пакети, свързани с PHP, които съществуват в текущата система, и ги записва в текстов файл с име packages.txt. Това помага да се реконструира същият списък от пакети на PHP 8.2.

При нова инсталация тази стъпка не е необходима.

dpkg -l | grep php | tee packages.txt

2. Добавете софтуерно хранилище.

След като това хранилище бъде добавено към списъка със софтуерни източници на системата, първоначалната инсталация и актуализациите могат да се извършат със стандартните aptкоманди.

Ubuntu LTS версии

sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt update

Debian

sudo apt install apt-transport-https lsb-release ca-certificates ```
software-properties-common
sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt update

3. Инсталирайте PHP 8.2 и разширения

Всички PHP 8.2 пакети, налични в хранилището, добавено в стъпка #2, следват php8.2-модела за именуване. Пакетните разширения в PHP, като json, ctype, date, randomи т.н., не трябва да се инсталират ръчно.

Пакетът php8.2-commonвключва няколко общи PHP пакета. Възможно е по-късно избирателно да деактивирате ненужните разширения.

sudo apt install php8.2 php8.2-cli php8.2-{curl,bz2,mbstring,intl}

Разгънете фигурните скоби по-горе, за да включите всички разширения, необходими за новата система. Когато надграждате съществуваща PHP настройка, packages.txtфайлът, създаден в стъпка #1, трябва да изброява всички текущи PHP пакети.

4. Инсталирайте и активирайте API на сървъра

В система, която уеб сървър интегрира с PHP, инсталирайте допълнителните сървърни API пакети. Следват някои примери за най-популярните комбинации:

Apache уеб сървър с PHP-FPM

sudo apt install php8.2-fpm
sudo a2enconf php8.2-fpm
sudo a2disconf php8.1-fpm # When upgrading from an older PHP version
sudo service apache2 restart

Уеб сървър на Apache с PHP като модул на Apache Инсталирането на PHP като модул на Apache не се препоръчва, освен ако не се изисква за крайни случаи на използване.

sudo apt install libapache2-mod-php8.2
sudo a2enmod php8.2
sudo a2dismod php8.1 # When upgrading from an older PHP version
sudo service apache2 restart

Nginx уеб сървър с PHP-FPM

sudo apt install php8.2-fpm
sudo service nginx restart

След това редактирайте съответния конфигурационен файл на Nginx, за да сочи към новия PHP сокет в fastcgi_passдиректива:

 fastcgi_pass unix:/run/php/php8.1-fpm.sock;
 fastcgi_pass unix:/run/php/php8.2-fpm.sock;

5. Тествайте инсталацията на PHP 8.2

За да тествате инсталацията на PHP CLI, опитайте да изпълните следните команди:

php -v
php -m

Очаква се изходът да показва PHP 8.2 , заедно със списък с активирани PHP разширения.

За да тествате интеграцията на уеб сървъра, опитайте да стартирате PHP файл през уеб сървъра.

6. Изчистете старите PHP пакети

Следните команди премахват по-стари версии на PHP. Препоръчително е да не ги премахвате, докато инсталацията на PHP 8.2 не бъде потвърдена, че работи правилно.

sudo apt purge php8.1* # Change "php8.1" with the old PHP version names.

Това премахва и конфигурационните файлове за премахваните пакети.

Изпълнение на няколко PHP 8.2 заедно с други версии

Не е необходимо да инсталирате PHP 8.2 глобално и да премахнете старата версия на PHP, защото е възможно да стартирате няколко версии на PHP едновременно на един и същ сървър.

PHP 8.2 CLI ще бъде инсталиран на /usr/bin/php8.2място по подразбиране, но е свързан. По подобен начин други двоични файлове на PHP ще бъдат разположени в същата директория ( /usr/bin/php8.0, /usr/bin/php7.4и т.н.). Името по подразбиране phpще бъде свързано символично с най-новата версия на PHP по подразбиране, но е възможно да промените къде се phpсвързва командата по подразбиране.

Командата update-alternativesпредоставя лесен начин за превключване между версии на PHP за PHP CLI, ако има няколко версии на PHP, които се свързват към един и същи phpпът.

sudo update-alternatives --config php

Това извежда подкана за интерактивен избор на алтернативния PHP двоичен път, phpкъм който сочи.

There are 2 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php8.2   82        auto mode
  1            /usr/bin/php8.1   81        manual mode
  2            /usr/bin/php8.2   82        manual mode

За да зададете пътя без интерактивната подкана:

update-alternatives --set php /usr/bin/php8.1

Създал:Тони Ангелчовски