url image

Смена версий PHP

В данной статье расскажем, как изменить версию PHP, и рассмотрим сразу несколько вариантов. Среди них, скорее всего, есть и ваш случай:

Важно! Необходимо использовать только подходящий для вашего случая вариант смены версии PHP. Например, не стоит пользоваться способом для серверов без панели управления, если на вашем сервере установлена ispmanager или используются отличные от LAMP/LEMP конфигурации веб-сервера.

На сервере с панелью управления ispmanager

В данном случае версии переключаются довольно просто, и в стандартной установке ispmanager уже установлены несколько альтернативных версий.

В разделе Сайты выберите сайт и нажмите сверху Редактировать — Изменить:

Раскрываем вкладку Обработчик (PHP) и в пункте Версия PHP выбираем нужную:

Затем нажмите внизу кнопку Сохранить, и на этом смена версии будет завершена, сайт начнет работать на выбранной версии.

Если в списке нет нужной вам версии, то ее можно установить в разделе Настройки — Настройки PHP:

Выбираете нужную вам версию и нажимаете сверху Установить.

Потребуется какое-то время на установку. Когда значок в графе Состояние изменится на зеленую галочку, установка будет завершена и свежеустановленная версия появится в списке всех альтернативных версий. Теперь версию для сайта можно переключить способом, описанным выше.

На сервере с окружением Bitrix-env (Битрикс: Веб-окружение)

При авторизации по SSH с пользователем root к VDS с оболочкой Bitrix-env можно увидеть стартовое меню:

В данном меню в поле выбора вводим 1 и нажимаем Enter.

Откроется следующее меню, где необходимо выбрать пункт 8:

В новом окне меню будет предложено ввести 2 варианта ответа:

  • all — изменить версию для всех сайтов;
  • <hostname> — изменить версию только для сайта, который вы укажете вместо слова hostname, в нашем примере это testpanel.fvds.ru или testbitrix.fvds.ru:

Мы выберем вариант all.

В нашем примере в таблице в колонке PHP у сайтов установлена версия PHP 7.4.33.

Меню нам предложит следующие варианты:

  1. Upgrade PHP

  2. Downgrade PHP

Первый вариант позволит нам повысить версию PHP, второй — понизить.

Выберем в нашем случае более разумный вариант — повысить версию PHP до более актуальной, введя 1.

После этого потребуется выбрать, до какой версии повысить, в нашем случае варианты:

  1. Update PHP to version 8.1
  2. Update PHP to version 8.0

Выберем вновь 1-ый вариант.

Далее будет задан подтверждающий вопрос «Please confirm you want to update (Y|N)», вводим Y (Yes) и нажимаем Enter.

После чего запустится процесс обновления версии PHP, который займет некоторое время. Процесс обновления версии можно считать завершенным, когда, зайдя повторно в меню изменения версий, вы увидите в таблице в колонке PHP уже новую версию, в нашем случае — 8.1.

Либо можно просто выйти из меню и по прошествии времени на установку новой версии ввести команду:

php -v

и увидеть, что версия изменена:

Если это окажется слишком высокой версией PHP для вашего сайта, можно её понизить. Для этого вернитесь в меню командой sh /root/menu.sh, пройдите вновь по пунктам меню — all  2, на финальном шаге выберите пункт Downgrade PHP, до какой версии понизить и подтвердите операцию смены версии.

На сервере без панели управления

Для Debian/Ubuntu:

Сначала проверьте текущую версию PHP, введя следующую команду:

php -v

Если у вас версия PHP 7.4 или ниже, вы можете обновиться, например, до PHP 8.0:

Для этого установим необходимое ПО и репозиторий.

apt install software-properties-common
add-apt-repository ppa:ondrej/php 
# в процессе установки система попросит подтвердить добавление репозитория, для этого нажмите Enter

Обновляем список пакетов с учётом новых репозиториев командой:

apt update

Затем установим PHP 8.0 командой:

apt install php8.0

После этого следует установить часто используемые расширения PHP 8.0. Полный текст команды будет зависеть от необходимых вам расширений, но она может выглядеть, например, так:

apt install php8.0-cli php8.0-fpm php8.0-pdo php8.0-mysql php8.0-zip php8.0-gd php8.0-mbstring php8.0-curl php8.0-xml php8.0-bcmath

Теперь необходимо переключить на новую версию PHP модуль веб-сервера.

В случае, если у вас Apache:

Сначала отключаем старую версию командой:

a2dismod php7.4

Потом включаем новую версию PHP командой:

a2enmod php8.0

Не забудьте, что у нас в примере смена с версии «7.4» на «8.0», в вашем случае исходная и новая версии могут быть другие, установите в командах соответствующие значения для вашей ситуации.

Для применения конфигурации, необходимо перезапустить Apache командой:

service apache2 restart

В случае, если у вас Nginx:

Мы рассмотрим переключение только для варианта, когда обработкой PHP занимается PHP-fpm (рецепт LEMP).

Файл конфигурации может находиться по адресу /etc/nginx/sites-available/default.conf или /etc/nginx/sites-available/site.ru.conf , или в другом месте в зависимости от ваших настроек.

Найдите блок кода, который выглядит следующим образом:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

Вам нужно заменить php7.4-fpm.sock на php8.0-fpm.sock, чтобы использовать новую версию PHP:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
}

Этот параметр указывает Nginx обрабатывать файлы PHP с использованием PHP 8.0.

Чтобы применить изменения, вам необходимо перезапустить Nginx и PHP-FPM:

systemctl reload nginx
systemctl restart php8.0-fpm

Для СentOS 7:

Версия PHP, доступная из стандартного репозитория CentOS 7, устарела, по этой причине нам необходимо установить сторонний репозиторий пакетов, чтобы получить более актуальную версию PHP. 

Remi — популярный репозиторий, предоставляющий самые последние версии PHP для серверов CentOS.

Установим репозиторий Remi для CentOS 7 командой:

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

После завершения установки вам нужно будет запустить команду, чтобы включить репозиторий, содержащий нужную вам версию PHP. Чтобы проверить, какие версии PHP доступны в репозитории Remi, запустите команду:

yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64

Вы увидите подобный результат:

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * remi-safe: mirror.docker.ru
remi-safe                   | 3.0 kB  00:00:00     
remi-safe/primary_db        | 2.5 MB  00:00:00     
Available Packages
php70.x86_64                 7.0-1.el7.remi                          remi-safe
php71.x86_64                 7.1-1.el7.remi                          remi-safe
php72.x86_64                 7.2-1.el7.remi                          remi-safe
php73.x86_64                 7.3-1.el7.remi                          remi-safe
php74.x86_64                 7.4-3.el7.remi                          remi-safe
php80.x86_64                 8.0-3.el7.remi                          remi-safe
php81.x86_64                 8.1-4.el7.remi                          remi-safe
php82.x86_64                 8.2-5.el7.remi                          remi-safe

В этой статье мы установим PHP 7.4, которая на данный момент является достаточно стабильной и всё ещё актуальной версией PHP. Затем, чтобы показать как можно использовать репозиторий Remi, перейдем с версии 7.4 на 8.0.

Итак, чтобы включить правильный пакет Remi для установки PHP 7.4, сначала нужно установить yum-config-manager, он входит в yum-utils, что устанавливается командой:

yum install yum-utils

Затем включаем ветку репозитория с версией 7.4:

yum-config-manager --enable remi-php74

Теперь нужно посмотреть, какие пакеты со стандартной версией php 5.4 сейчас установлены. Можно использовать команду yum list installed | grep php или более удобную для копирования вывода команду:

echo $(yum list installed | grep php|grep -v niguru|awk '{print $1}' | tr -s '\n' ' ')

Получим примерно такой список (у вас может отличаться, особенно на версии PHP 5.4):

gd3php.x86_64 php.x86_64 php-cli.x86_64 php-common.x86_64 php-fpm.x86_64 php-gd.x86_64 php-json.x86_64 php-mbstring.x86_64 php-mysqlnd.x86_64 php-opcache.x86_64 php-pdo.x86_64 php-soap.x86_64 php-sodium.x86_64 php-xml.x86_64

Выделяем его, копируем и вставляем в команду удаления пакетов. Итого должно получиться примерно так (у вас может отличаться):

yum remove gd3php.x86_64 php.x86_64 php-cli.x86_64 php-common.x86_64 php-fpm.x86_64 php-gd.x86_64 php-json.x86_64 php-mbstring.x86_64 php-mysqlnd.x86_64 php-opcache.x86_64 php-pdo.x86_64 php-soap.x86_64 php-sodium.x86_64 php-xml.x86_64

Теперь заново ставим все удаленные пакеты, но так как мы сменили репозиторий, пакеты будут устанавливаться уже другой версии:

yum install -y php php-fpm php-opcache php-curl php-mbstring php-xml php-json php-mysqli php-gd curl bzip2 wget catdoc php-soap

Список пакетов может отличаться и зависит от необходимых вам расширений (модулей) PHP. Если требуется еще какой-то, просто добавьте в конец строки php-extensionname, где extensionname — это название расширения PHP, либо вставьте еще раз список, который использовали для удаления пакетов.

Теперь можем проверить, что установилась нужная версия PHP:

php -v

В случае, если у вас установлен Apache, достаточно перезапустить Apache командой:

systemctl restart httpd

В случае, если используется PHP-fpm:

Далее необходимо вернуть наши прежние конфигурационные файлы взамен свежеустановленных стандартных. Делается это следующими командами, на вопрос о перезаписи отвечаем Y (Yes) и нажимаем Enter:

mv /etc/php.ini.rpmsave /etc/php.ini
mv /etc/php-zts.d/10-opcache.ini.rpmsave /etc/php-zts.d/10-opcache.ini
mv /etc/php.d/10-opcache.ini.rpmsave /etc/php.d/10-opcache.ini
mv /etc/php-fpm.d/www.conf.rpmsave /etc/php-fpm.d/www.conf 

Строки по замене конфигурационных файлов opcache применимы только в случае, если у вас изначально стояло это расширение.

Дальше остаётся перезапустить службу php-fpm:

systemctl restart php-fpm

Если захотите снова переключить версию PHP, повторите процедуру, но предварительно отключите ветку репозитория командой (пример для отключения 7.4):

yum-config-manager --disable remi-php74

Затем включите нужную версию (пример для включения версии PHP 8.0):

yum-config-manager --enable remi-php80

Теперь можно проводить дальнейшую установку способом, описанным выше.

Этот материал был полезен?

Скидка 25% новым клиентам!
Закажи сервер сегодня и получи скидку на первый месяц аренды!