Обновление препроцессора гипертекста PHP, используемого во многих CMS (Content management system), требуется при серьёзных обновлениях CMS и её модулей.
Препроцессор помогает автоматизировать различные серверные задачи. Он обрабатывает динамический контент и запросы к базе данных, выполняет предварительную обработку/отображение данных.
Содержание
Введение
Исходные данные:
- Система Linux под управлением Ubuntu 20.04;
- Работающий веб-сервер Nginx;
- PHP версии 7.4.
Задача
Обновление PHP 7.4 до версии 8.1.
Обновление возможно, конечно, до версии 8.2, но не все модули тестировались на версии 8.2.
Обновление PHP на сервере Nginx
Сначала проверяем необходимость в обновлении дистрибутива:
mensh@139-162-132-20:~$ sudo apt update
mensh@139-162-132-20:~$ sudo apt upgrade
Устанавливаем общие свойства программного обеспечения для получения его из независимых источников:
mensh@139-162-132-20:~$ sudo apt install software-properties-common
Добавляем ppa:ondrej/php
, который предоставляет разные версии PHP для Ubuntu:
mensh@139-162-132-20:~$ sudo add-apt-repository ppa:ondrej/php
После загрузки PPA нажимаем Enter, подтверждая добавление репозитория. В PPA доступны версии препроцессора от 5.6 до 8.2.
Для включения новых пакетов выполняем обновление apt
:
mensh@139-162-132-20:~$ sudo apt update
mensh@139-162-132-20:~$ sudo apt upgrade
Установка PHP 8.1
Теперь для установки препроцессора версии 8.1 на сервере Nginx следует выполнить следующую команду:
mensh@139-162-132-20:~$ sudo apt install php8.1-fpm -y
Если не указывать номер версии, то по умолчанию будет установлена последняя версия (8.2).
mensh@139-162-132-20:~$ sudo systemctl reload php8.1-fpm
Правка конфигурационного файла Nginx
Редактируем конфигурационный файл Nginx:
mensh@139-162-132-20:~$ mensh@139-162-132-20:~$ sudo vim /etc/nginx/sites-available/linuxcookbook.ru.conf
...
location ~ '\.php$|^/update.php' {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
...
Здесь версия препроцессора была изменена с 7.4 на 8.1.
По завершении установки перезапускается служба Nginx для применения изменений:
mensh@139-162-132-20:~$ sudo systemctl restart nginx
Установка модулей PHP в Ubuntu
Устанавливаем модули, необходимые для работы CMS. Я, например, установил следующие модули:
mensh@139-162-132-20:~$ sudo apt install php8.1-calendar
mensh@139-162-132-20:~$ sudo apt install php8.1-ctype
mensh@139-162-132-20:~$ sudo apt install php8.1-curl
mensh@139-162-132-20:~$ sudo apt install php8.1-date
mensh@139-162-132-20:~$ sudo apt install php8.1-dom
mensh@139-162-132-20:~$ sudo apt install php8.1-exif
mensh@139-162-132-20:~$ sudo apt install php8.1-FFI
mensh@139-162-132-20:~$ sudo apt install php8.1-ftp
mensh@139-162-132-20:~$ sudo apt install php8.1-gd
mensh@139-162-132-20:~$ sudo apt install php8.1-gettext
mensh@139-162-132-20:~$ sudo apt install php8.1-gmp
mensh@139-162-132-20:~$ sudo apt install php8.1-mysql
mensh@139-162-132-20:~$ sudo apt install php8.1-hash
mensh@139-162-132-20:~$ sudo apt install php8.1-iconf
mensh@139-162-132-20:~$ sudo apt install php8.1-intl
mensh@139-162-132-20:~$ sudo apt install php8.1-json
mensh@139-162-132-20:~$ sudo apt install php8.1-libxml
mensh@139-162-132-20:~$ sudo apt install php8.1-mbstring
Проверяем список всех загруженных модулей:
mensh@139-162-132-20:~$ php -m
[PHP Modules]
apcu
bz2
calendar
Core
ctype
curl
date
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zlib
[Zend Modules]
Zend OPcache
mensh@139-162-132-20:~$
Удаление старой версии PHP в Ubuntu
Для удаления старой версии препроцессора из Ubuntu выполняем следующую команду:
mensh@139-162-132-20:~$ sudo apt purge php7.4-fpm
Удаляем потерянные пакеты:
mensh@139-162-132-20:~$ sudo apt autoremove
Проверяем установленную версию:
mensh@139-162-132-20:~$ php -v
PHP 8.1.20 (cli) (built: Jun 8 2023 15:25:40) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.20, Copyright (c) Zend Technologies
with Zend OPcache v8.1.20, Copyright (c), by Zend Technologies
mensh@139-162-132-20:~$
Заключение
После прочтения этой статьи и следуя представленным здесь инструкциям любой начинающий администратор своего сервера Ubuntu легко обновит PHP.