[РЕШЕНО] Обновление PHP до версии 7.4 на Ubuntu Server с NGINX + PHP-FPM + VestaCP

29 комментариев
vcp_ubuntu_php

Сегодня в статье рассмотрим Обновление PHP до PHP 7.4 на Ubuntu Sever с панелью управления VestaCP и веб сервером Nginx + php-fpm.

Все началось после того, как WordPress предложил мне обновится до более новой версии PHP, а точнее до версии PHP 7.3 PHP 7.4

Ну раз предложил, то почему бы и нет. Тем более новая версия PHP 7.3 дает прирост 5%-10% по сравнению с PHP 7.2 и 20%-25% по сравнению с PHP 7.1. PHP 7.4 стала еще более быстрой+ 5-8% по сравнению с PHP 7.3

Обновление PHP на Ubuntu с VestaCP

Для обновления на новую версию PHP, подключаемся по SSH к нашему серверу.

ssh пользователь@IP-адрес_сервера

Далее добавим более свежий репозиторий для нашего PHP

sudo add-apt-repository ppa:ondrej/php

Обновим индексы:

sudo apt update

Устанавливаем php 7.4,а также некоторые необходимые дополнения.

sudo apt install php-pear php7.4 php7.4-common php7.4-cli php7.4-fpm php7.4-gd php7.4-mysql php7.4-mbstring php7.4-curl php7.4-xml php7.4-zip php7.4-json php7.4-imagick php7.4-xmlrpc php7.4-bz2 php7.4-dev php7.4-opcache php-memcached

После установки всех дополнений PHP 7.4 набираем в терминале следующую команду:

sudo update-alternatives --set php /usr/bin/php7.4

Данная команда назначит к запуску по умолчанию интерпретатор PHP 7.4.

Если же Вы хотите вернуть версию PHP 7.X, то набираем такую команду:

sudo update-alternatives --set php /usr/bin/php7.X

Скопируйте старый php.ini в новую директорию:

sudo cp /etc/php/7.X/fpm/php.ini /etc/php/7.4/fpm/php.ini

Останавливаем службу php7.X-fpm и запускаем php7.4-fpm:

sudo service php7.X-fpm stop
sudo service php-fpm stop
sudo service php7.4-fpm start
sudo service php-fpm restart

Проверяем всё ли запустилось:

sudo service php-fpm status
sudo service php7.4-fpm status

Должно выдать что-то вроде этого:

php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-05-22 15:12:32 UTC; 46min ago
       Docs: man:php-fpm7.4(8)
    Process: 400 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /et>
   Main PID: 252 (php-fpm7.4)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
      Tasks: 3 (limit: 2127)
     Memory: 20.5M
     CGroup: /system.slice/php7.4-fpm.service
             ├─252 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
             ├─398 php-fpm: pool www
             └─399 php-fpm: pool www

Если после данной манипуляции перестали работать сайты на WordPress, то читаем дальше.

Решение ошибки 500 — внутренняя ошибка сервера.

И так мы подобрались к сути проблемы. После всех этих действий сайт с версией PHP 7.4 выдавал ошибку 500. Как только я останавливал 7.4 и запускал, ну скажем PHP 7.2 ошибка исчезала и сайт начинал работать в нормальном режиме.

Решил искать во всех конфигурационных файла PHP. Сравнивая два файла мне удалось найти некоторые отличия, но сути проблемы это не меняло. И вот когда я совсем отчаялся мне на глаза попадается конфигурационный файл PHP от панели VestaCP расположенный в директории /etc/php/7.2/fpm/pool.d/ и называется он как ваш домен. В моем случае obu4alka.ru.conf со следующим содержимым:

[obu4alka.ru]
 listen = 127.0.0.1:9001
 listen.allowed_clients = 127.0.0.1
 user = user
 group = user
 pm = ondemand
 pm.max_children = 4
 pm.max_requests = 4000
 pm.process_idle_timeout = 10s
 pm.status_path = /status
 php_admin_value[upload_tmp_dir] = /home/user/tmp
 php_admin_value[session.save_path] = /home/user/tmp
 env[HOSTNAME] = $HOSTNAME
 env[PATH] = /usr/local/bin:/usr/bin:/bin
 env[TMP] = /home/user/tmp
 env[TMPDIR] = /home/user/tmp
 env[TEMP] = /home/user/tmp

Данный файл подгружает настройки для нашего домена при запуске php-fpm. Ну хорошо копирую файл в директорию с PHP 7.4, а лучше сразу всю директорию

sudo cp /etc/php/7.2/fpm/pool.d/ /etc/php/7.4/fpm/

Если запускали старую версию PHP, то останавливаем службу php7.2-fpm и запускаем php7.4-fpm:

sudo service php7.2-fpm stop
sudo service php7.4-fpm start

Захожу на сайт, УРА!!! Ошибка 500 исчезла, сайт заработал в нормальном режим.


P.S. Также если не помогает, то двигаемся дальше. И да если сайт отказывается работать на новой версии PHP. Делаем следующее:

sudo nano /usr/local/vesta/conf/vesta.conf

Меняем значение на:

WEB_BACKEND='php74-php-fpm'

Также удаляем файлы:

sudo rm /etc/init.d/php-fpm
sudo rm /etc/init.d/php7.2-fpm

Далее копируем нашу PHP 7.4:

cp /etc/init.d/php7.4-fpm /etc/init.d/php-fpm

Рестарт PHP

sudo service php7.4-fpm restart
sudo service php-fpm restart

Если и после этого сайт отказывается работать на новой версии PHP , то уаляем старую версию:

sudo apt remove --purge php7.2
sudo apt autoremove
sudo apt autoclean

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВКонтакте или подписаться на Twitter. Ссылки в шапке страницы.
Заранее всем спасибо!!!

RSS

Добавление RSS-ленты на главную страницу этого сайта не поддерживается, так как это может привести к зацикливанию, замедляющему работу вашего сайта. Попробуйте использовать другой блок, например блок Последние записи, для отображения записей сайта.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Русифицируем Ubuntu Server 16.04/18.04/20.04 LTS
linux-logo

Сегодня в статье настроим и русифицируем Ubuntu Server 16.04/18.04/20.04. Чтобы поддерживался русский язык, и перевод системы стал русским

Вносим CAA запись в DNS (bind9)
dns_bind9

Начиная с сентября 2017 года удостоверяющим центрам предписано обязательно проверять CAA-записи в DNS перед генерацией сертификата

Обновления Ubuntu Server 16.04 до 18.04
linux-logo

В этой статье рассмотрим пример обновления Ubuntu Server 16.04 до Ubuntu Server 18.04 Все наши действия нам придется выполнять из Читать

Защита OpenVPN с помощью Fail2Ban
fail2ban-logo

В связи с последними блокировками IP-адресов Роскомнадзором, встала необходимость завести свой собственный VPN сервер. Если VPN у вас ещё не Читать

5 1 голос
Рейтинг статьи

Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

29 комментариев
новее
старее большинство голосов
Inline Feedbacks
Просмотреть все комментарии
Багчекер
Багчекер
26.09.2021 20:13

Вообщем такие проблемы
1) sudo update-alternatives –set php /usr/bin/php7.4
пишет ошибку  add-apt-repository: command not found
2) alternative /usr/bin/php7.4 for php not registered; not setting

что делаем? (щяс стоит 7.2 и веста)

dvl
dvl
02.09.2020 11:41

Инструкция нерабочая. ubuntu 18.04 – всё будет работать ровно до того момента, как надо добавить новый сайт или выполнить “пересоздать web”.

dvl
dvl
Ответить на  webmaster С.
03.09.2020 09:50

Разворачиваем Ubuntu 18.04 Ставим vestaCP в версии php-fpm Добавляем какой-нибудь сайт Обновляем версию php c 7.2 до 7.4 по этой инструкции Ребутим сервер, убеждаемся, что сайт всё еще работает. Делаем любую манипуляцию, приводящую к “rebuild web” Всё, сайт лежит. Ошибок никаких нет, все сервисы работают. Вероятно нужно что-то еще править,… Подробнее »

dvl
dvl
Ответить на  webmaster С.
03.09.2020 13:46

Вот поэтому инструкция нерабочая. Не бывает так, что после смены php ни разу не придётся что-то менять в конфигах. Та же смена сертификата приведет к rebuild web и всё, прощай сайт.

Сашка
Сашка
26.08.2020 20:59

Спасибо, обновил до 7.4.9.

Алексей
Алексей
23.08.2020 18:25

502 Bad Gateway на Debian 9 + wordpress

Дмитрий
Дмитрий
19.08.2020 11:35

Чувак, ты провтыкал один серьёзный момент: php-fpm это отдельный сервис, и при отключении php7.2 даже при включённом в автозагрузку php7.4 всё-равно грузится php-fpm из php7.2 т.е. шлюз тупо лежит. Как добавит в автозагрузку по умолчанию php-fpm новой версии?

Дмитрий
Дмитрий
Ответить на  Дмитрий
19.08.2020 16:12

Вопрос снимается. Признаю свой косяк. В автозагрузке systemd php-fpm – это символическая ссылка, указывающая на php7.2-fpm в этом же каталоге, т.е. всего-лишь псевдоним. Можно переписать ссылку на php7.4-fpm, можно вообще удалить. php-fpm используется всего-лишь как псевдоним при управлении через service (stop|start|restart|итд)

Последний раз редактировалось 3 лет назад by Дмитрий
seoonly.ru
seoonly.ru
08.06.2020 10:29

Спасибо, 7 версия просто по скорости тащит

Никита
Никита
07.06.2020 10:01

Добрый день!
Все успешно обновилось по инструкции, но wordpress все равно пишет, что сайт использует php 7,0, хотя я его удалил

Дмитрий
Дмитрий
26.05.2020 10:34

Добрый день, Олег. Только сейчас дошли руки до продолжения. Проделал всё, кроме последнего пункта: “Если и после этого сайт отказывается работать на новой версии PHP , то удаляем старую версию”, но всё равно вижу в WordPress после перезагрузки 7.2. Если отключаю – 500. А если удалю 7.2 и после этого… Подробнее »

Дмитрий
Дмитрий
Ответить на  webmaster С.
31.05.2020 15:08

Добрый день, Олег! Как это объяснить? php -v PHP 7.4.6 (cli) (built: May 14 2020 10:02:44) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.6, Copyright (c), by Zend Technologies ~$ sudo update-alternatives –config php There are 2 choices for… Подробнее »

Сергей
Сергей
16.11.2019 15:26

И можно ли как-то уже напрямую накатить php7.3-fpm на чистом дестрибутиве debian 9 ?

Сергей
Сергей
16.11.2019 15:24

Скажите пожалуйста, актуально ли это для debian 9? на нем в дефолте стоит php7.0.

Александр
Александр
11.11.2019 03:29

Сделал, получилось. Подскажите еще, как решить 500 ошибку для /phpmyadmin/ в таком случае. Он не запускается. А при прежней версии php – все ок.

Сообщить об опечатке

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