Сегодня в статье рассмотрим Обновление 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

[endtxt]

RSS

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

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

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

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

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

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов cookie) с использованием трекеров "Google Analytics" и "Yandex.Metrics". Порядок обработки Ваших персональных данных, а также реализуемые требования к их защите, содержатся в Политике конфиденциальности.
Принять