1.Сохранение списка модулей php, которые установлены для текущей версии 7.0
Чтобы после установки PHP версии 7.2 сравнить модули этой версии с версией 7.0 и
доустановить модули, которых не хватает
1 |
# php -m > modules-php-70.txt |
2. Установка переменной локали и добавление репозитария для установки PHP версии 7.2
Устанавиливаем пакет software-properties-common, который содержит в себе команду/бинарник add-apt-repository
1 |
# apt-get update && apt-get install software-properties-common |
Проверяем,что установлена нужная переменная локали LC_ALL
1 |
# locale | grep LC_ALL |
1 |
LC_ALL=en_US.UTF-8 |
Переменная LC_ALL переопределяет своим значением все LC_*-переменные, включая LANG, независимо от того, установлены они или нет.
Если переменная не определена
1 |
# dpkg-reconfigure locales |
1 |
# update-locale LC_ALL=en_US.UTF-8 |
1 |
# locale | grep LC_ALL |
3. Добавление репозитария, обновление локального кеша пакетов и установка php версии 7.2
1 |
# LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php |
1 |
# apt-get update && apt-get install php7.2 |
1 |
# php -v |
1 2 3 4 |
PHP 7.2.32-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Jul 9 2020 16:33:33) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.32-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies |
4.Установка необходимых модулей PHP, включая php-fpm
1 |
# apt-get install php7.2-curl php7.2-dom php7.2-imap php7.2-intl php7.2-mbstring php7.2-gd php7.2-redis php7.2-xmlrpc php7.2-zip php7.2-igbinary php7.2-mysql php7.2-fpm php7.2-dev |
Установка пакета php7.2-dev необходимо, чтобы появились бинарники/команды
1 |
/usr/bin/php-config7.2 |
1 |
/usr/bin/phpize7.2 |
которые позволяют переключать версии php cli c 7.0 на 7.2, если, например, после
установки php7.2, автоматически дефолтной версий php-cli становится 7.2, а вы вручную переключили на 7.0 назад, а затем понадобилось переключить дефолтную версию php c 7.0 на 7.2
5.Получение списка модулей php версии 7.2 и сравнение их со списком модулей версии 7.0
1 |
# php -m > modules-php-72.txt |
1 |
# diff modules-php-72.txt modules-php-70.txt |
1 2 3 4 |
21a22 > mcrypt 38d38 < sodium |
Видно, что в 7.0 есть расширение mcrypt, а в 7.2 оно отсутствует
Выполним поиск доступных пакетов для обоих версий PHP для модуля mcrypt
1 |
# apt-cache search php7.0-mcrypt |
1 |
php7.0-mcrypt - libmcrypt module for PHP |
1 2 |
# apt-cache search php7.2-mcrypt # |
В PHP версии 7.2 модуль mcrypt был удален из репозитария, его можно собрать и установить через pecl
Это будет рассмотрено в отдельной статье
6.Базовая установка параметров PHP-FPM и php.ini для php-fpm
Настройки PHP-FPM приводим у виду:
1 |
# grep -vE "^$|^;" /etc/php/7.2/fpm/php-fpm.conf |
1 2 3 4 5 6 7 8 |
[global] pid = /run/php/php7.2-fpm.pid error_log = /var/log/php7.2-fpm.log emergency_restart_threshold = 10 emergency_restart_interval = 1m process_control_timeout = 10s daemonize = yes include=/etc/php/7.2/fpm/pool.d/*.conf |
Устанавливаем желаемые значения для этих параметров PHP-FPM
1 |
# grep -E 'post_max_size|upload_max_filesize|max_execution_time|max_input_time|memory_limit|max_input_vars = 10000' /etc/php/7.2/fpm/php.ini |
1 2 3 4 5 6 |
max_execution_time = 300 max_input_time = 600 max_input_vars = 10000 memory_limit = 256M post_max_size = 128M upload_max_filesize = 128M |
При необходимости настраиваем Opcache расширение для кеширования
1 |
# cat /etc/php/7.2/mods-available/opcache.ini |
1 2 3 4 5 6 7 8 9 10 11 12 |
; configuration for php opcache module ; priority=10 zend_extension=opcache.so opcache.memory_consumption=256 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=20000 opcache.revalidate_freq=0 opcache.fast_shutdown=1 opcache.enable_cli=1 opcache.enable=1 opcache.validate_timestamps=1 |
7.Настройка php-fpm пулов и Nginx-виртуальных хостов сайтов,которые нужно перевести с 7.0 на 7.2
Копируем конфиги php-fpm-пулов для сайтов,которіе работают на php-fpm версии 7.0, а переводим их на работу с версией 7.2
1 |
# cp /etc/php/7.0/fpm/pool.d/{site1.com.conf,site2.com.conf,site3.com.conf} /etc/php/7.2/fpm/pool.d/ |
1 |
# sed -i -e "s/7.0/7.2/g" /etc/php/7.2/fpm/pool.d/* |
Изменяем версию php-fpm-сокета,куда nginx отправляет php-запросы
1 |
# sed -i -e "s/php7.0/php7.2/g" /etc/nginx/sites-enabled/{site1.com.conf,site2.com.conf,site3.com.conf} |
Проверка синтаксиса конф.файла и всех файлов пула PHP-FPM версии 7.2, перезапуск сервиса, включение его в автозагрузку
1 |
# php-fpm7.2 -t && systemctl restart php7.2-fpm |
1 |
# systemctl enable php7.2-fpm |
Проверка синтаксиса Nginx и его перезагрузка
1 |
# nginx -t && service nginx reload |
8.Изменение PHP-версии, которая используется в качестве php-cli
Для ручного переключения текущей/активной/дефолтной версии с 7.2 на 7.0 выполняем
1 |
# update-alternatives --set php /usr/bin/php7.0 |
1 |
# update-alternatives --set phar /usr/bin/phar7.0 |
1 |
# update-alternatives --set phar.phar /usr/bin/phar.phar7.0 |
1 |
# update-alternatives --set phpize /usr/bin/phpize7.0 |
1 |
# update-alternatives --set php-config /usr/bin/php-config7.0 |
Для ручного переключения текущей/активной/дефолтной версии с 7.0 на 7.2 выполняем
1 |
# update-alternatives --set php /usr/bin/php7.2 |
1 |
# update-alternatives --set phar /usr/bin/phar7.2 |
1 |
# update-alternatives --set phar.phar /usr/bin/phar.phar7.2 |
1 |
# update-alternatives --set phpize /usr/bin/phpize7.2 |
1 |
# update-alternatives --set php-config /usr/bin/php-config7.2 |
Источник:
https://www.liquidweb.com/kb/install-php-7-2-ubuntu-16-04
https://thishosting.rocks/install-php-on-ubuntu
https://tecadmin.net/switch-between-multiple-php-version-on-ubuntu