Обновление версии PHP на NGINX PHP-FPM

Версия PHP 7.4 содержит существенное количество обновлений и настоятельно рекомендуется к использованию. Для начала от имени суперпользователя добавляем репозитарий и обновляем списки пакетов:

$ apt-add-repository ppa:ondrej/php
$ apt-add-repository ppa:ondrej/nginx
$ apt update

Устанавливаем новые пакеты PHP и PHP-FPM:

$ apt install -y php7.4 php7.4-cli php7.4-common php7.4-fpm

Проверяем актуальную установленную версию PHP:

$ php -v
PHP 7.4.22 (cli) (built: Jul 30 2021 13:07:59) ( NTS )

(Опционально) Устанавливаем дополнительные библиотеки и модули для WordPress:

$ apt install -y php7.4-mysql php7.4-mysqli php7.4-dom php7.4-simplexml php7.4-ssh2 php7.4-xml php7.4-xmlreader php7.4-curl php7.4-exif php7.4-ftp php7.4-gd php7.4-iconv php7.4-imagick php7.4-json php7.4-mbstring php7.4-posix php7.4-sockets php7.4-tokenize php7.4-pdo php7.4-sqlite3 php7.4-ctype php7.4-fileinfo php7.4-zip php7.4-exif

(Опционально) Вносим изменения в /etc/php/7.4/fpm/php.ini — раскомментируем параметр cgi.fix_pathinfo и устанавливаем его равным 0.

; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0

Перезапускаем сервис PHP-FPM:

$ systemctl restart php7.4-fpm.service

Проверяем, что появился новый сокет:

$ ls -1 /run/php/
php-fpm.sock
php7.2-fpm.pid
php7.2-fpm.sock
php7.4-fpm.pid
php7.4-fpm.sock

Теперь осталось только в конфиге NGINX поменять версию PHP-FPM (указываем новый сокет):

$ nano /etc/nginx/sites-available/default
...
location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        }
...

Тестируем конфиг NGINX и перезапускаем его:

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ systemctl reload nginx.service

2 комментария

    1. По дефолту nginx и в дебиане кладёт конфиги в /etc/nginx. Посмотрите, что есть в этой директории, возможно конфиг с default просто снесли и сделали отдельный под каждый сайт (в этом случае вместо default будет имя конфига для нужного сайта).
      Ну и попробуйте поиском:
      $ whereis nginx
      $ find / -name sites-available

Оставьте ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *