Справочник

Как установить PHP на Ubuntu для nginx

Для сайта на nginx ставьте пакет php-fpm: это PHP, который работает отдельной службой и принимает запросы от nginx. В Ubuntu 24.04 он ставит PHP 8.3, в 26.04 — PHP 8.5. Модули для баз данных ставятся отдельными пакетами.

≈ 5 мин чтения
Содержание 9

Что сделать прямо сейчас

Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

  1. Обновите список пакетов: sudo apt update.
  2. Установите PHP-FPM: sudo apt install php-fpm. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter. На вопрос Do you want to continue? [Y/n] нажмите Y и Enter.
  3. Проверьте версию: php -v. Первая строка начинается с PHP 8.3 в Ubuntu 24.04 или PHP 8.5 в 26.04.
  4. Проверьте службу: sudo systemctl status php8.3-fpm (в Ubuntu 26.04 — php8.5-fpm). В ответе должно быть active (running). Выйти — клавиша Q.
  5. Если сайту нужна база MySQL или MariaDB, поставьте модуль: sudo apt install php-mysql, для PostgreSQL — sudo apt install php-pgsql.
  6. Подключите PHP к nginx — как это сделать.

Какая версия поставится

UbuntuВерсия PHPСлужбаСокет
24.04PHP 8.3php8.3-fpm/run/php/php8.3-fpm.sock
26.04PHP 8.5php8.5-fpm/run/php/php8.5-fpm.sock

Пакет php-fpm сам ничего не содержит: он ставит PHP-FPM той версии, что выбрана для вашей Ubuntu, — php8.3-fpm или php8.5-fpm. Вместе с ним ставится PHP для командной строки, поэтому работает php -v. Дальше в примерах — 8.3: в Ubuntu 26.04 подставьте 8.5.

Почему php-fpm, а не php

nginx сам PHP не выполняет: он передаёт запросы к файлам .php отдельной программе — PHP-FPM. Пакет php без уточнений для nginx не подходит. В Ubuntu 24.04 он через php8.3 требует одно из трёх: модуль PHP для Apache, PHP-FPM или CGI. Модуль Apache в этом списке первый, а сам он зависит от Apache. Так на сервер может попасть второй веб-сервер, который будет спорить с nginx за порт 80.

Если это уже случилось и nginx не запускается из-за занятого порта — разбор ошибки.

Как подключить PHP к nginx

PHP-FPM принимает запросы через файл-сокет. Проверьте, что он есть:

ls /run/php/

В ответе должен быть файл php8.3-fpm.sock. В файле настроек сайта nginx, в блоке server, добавьте index.php в строку index и блок для PHP:

    index index.php index.html;

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

Проверьте и примените настройки: sudo nginx -t, затем sudo systemctl reload nginx. Как проверить PHP пробным файлом и что делать, если браузер скачивает файл вместо страницы, — в разделе Если сайт на PHP инструкции по размещению сайта.

Модули PHP

Модули — дополнения к PHP: работа с базами, картинками, архивами. Посмотреть, какие уже включены: php -m. Модули ставятся пакетами с именем php8.3-имя или php-имя — второй вариант ставит модуль для версии PHP вашей Ubuntu.

ПакетЗачем
php-mysqlработа с MySQL и MariaDB: модули mysqli, mysqlnd и pdo_mysql. Нужен WordPress
php-pgsqlработа с PostgreSQL

Какие ещё модули нужны, написано в требованиях вашей программы: WordPress, интернет-магазина или фреймворка. После установки модуля перезапустите PHP-FPM:

sudo systemctl restart php8.3-fpm

Где настройки PHP

Настройки PHP для сайта — в файле /etc/php/8.3/fpm/php.ini. Там задаются, например, размер загружаемых файлов и лимит памяти. После правки перезапустите PHP-FPM той же командой sudo systemctl restart php8.3-fpm. Как поднять лимит загрузки файлов — разбор для WordPress.

Какие версии PHP стоят на сервере, покажет ls /etc/php/: в ответе — папки с номерами версий.

Ошибки и как их исправить

Что видитеЧто делать
502 Bad Gateway на страницах .phpPHP-FPM не запущен или указан не тот сокет
браузер скачивает файл .php вместо страницызапрос не дошёл до PHP: проверьте блок location и сделайте reload nginx
WordPress: в PHP нет расширения MySQLпоставьте php-mysql
Unable to locate packageapt не нашёл пакет

Источники

Сверено 14 октября 2026 года.

Что почитать дальше