Как установить PHP на Ubuntu: полное руководство с примерами, расширениями и настройкой Apache

PHP остается одним из самых востребованных языков серверной разработки, несмотря на появление новых конкурентов. Согласно данным W3Techs, более 77% всех веб-сайтов используют этот язык в той или иной форме. Установка и настройка PHP на Ubuntu — базовый навык для любого разработчика или системного администратора, работающего с веб-приложениями. В этом руководстве мы рассмотрим все аспекты установки: от выбора релиза до интеграции с веб-сервером и настройки необходимых расширений.
- Какие версии PHP доступны в Ubuntu 20.04, 22.04 и 24.04
- Как установить PHP в Ubuntu: пошаговая инструкция
- Как установить и активировать расширения PHP
- Настройка PHP в связке с веб-сервером (Apache или Nginx)
- Как протестировать, что PHP работает правильно
- Частые ошибки при установке и их решение
- Заключение
- Рекомендуем посмотреть курсы по программированию на PHP
Какие версии PHP доступны в Ubuntu 20.04, 22.04 и 24.04
Выбор подходящего релиза — это стратегическое решение, влияющее на безопасность и производительность. На 2025 год ландшафт версий в LTS-дистрибутивах Ubuntu выглядит следующим образом:
- Ubuntu 20.04 LTS (Focal Fossa): По умолчанию предлагает PHP 7.4. Эта версия уже не поддерживается разработчиками языка (EOL), но получает патчи безопасности от Canonical в рамках расширенной поддержки.
- Ubuntu 22.04 LTS (Jammy Jellyfish): Включает PHP 8.1. На данный момент эта версия находится в стадии «только исправления безопасности».
- Ubuntu 24.04 LTS (Noble Numbat): Самый актуальный релиз ОС, вышедший в апреле 2024 года. В его официальных репозиториях по умолчанию установлен PHP 8.3.
Для всех новых проектов, запускаемых в 2025 году, «золотым стандартом» является связка Ubuntu 24.04 + PHP 8.3. Это обеспечивает максимальную производительность и долгий срок поддержки без необходимости подключать сторонние репозитории.
| Версия | Статус поддержки | Доступность в Ubuntu | Рекомендация |
| PHP 7.4 | Не поддерживается (EOL) | Ubuntu 20.04 (Native) | Только для legacy-проектов |
| PHP 8.0 | Не поддерживается (EOL) | Только через PPA | Не рекомендуется |
| PHP 8.1 | Только исправления безопасности | Ubuntu 22.04 (Native) | Поддержка существующих проектов |
| PHP 8.2 | Активная поддержка | Через PPA | Для текущей разработки |
| PHP 8.3 | Активная поддержка | Ubuntu 24.04 (Native) | Лучший выбор для новых проектов |
Как установить PHP в Ubuntu: пошаговая инструкция
Процесс установки в Ubuntu можно реализовать несколькими способами, каждый из которых имеет свои преимущества. Мы рассмотрим два основных подхода: использование официальных репозиториев системы и установку через специализированный PPA-репозиторий, который предоставляет доступ к различным релизам языка.

Майнд-карта отражает общую структуру процесса установки и настройки PHP на Ubuntu. Она помогает увидеть ключевые этапы: выбор версии, способы установки, подключение расширений, настройку веб-сервера и тестирование. Такая схема упрощает навигацию по статье и формирует целостное понимание темы.
Способ 1. Установка из официальных репозиториев Ubuntu
Это наиболее простой и безопасный метод, который подходит для большинства стандартных сценариев разработки. Официальные репозитории Ubuntu гарантируют стабильность и своевременные обновления безопасности.
Первым делом обновляем информацию о пакетах в системе:
sudo apt update
Затем устанавливаем PHP одной командой:
sudo apt install php
Система автоматически установит релиз, предусмотренный для вашей Ubuntu (7.4 для 20.04 или 8.1 для 22.04). После завершения установки проверяем интерпретатор:
php -v
Вы должны увидеть информацию о релизе, дате сборки и других параметрах. Это подтверждает, что интерпретатор успешно установлен и доступен в системе.
Способ 2. Установка нужной версии через PPA (ondrej/php)
Когда требуется установить конкретный релиз — например, для совместимости с legacy-проектом или для тестирования новейших возможностей языка — мы обращаемся к PPA-репозиторию, который поддерживает разработчик Ondřej Surý. Этот репозиторий стал де-факто стандартом в сообществе PHP-разработчиков на Ubuntu.

Скриншот страницы репозитория с перечнем поддерживаемых версий PHP. Визуально показывает, что это официальный и активно поддерживаемый источник пакетов.
Сначала устанавливаем необходимые зависимости для работы с PPA (если они еще не установлены):
sudo apt install software-properties-common
Добавляем репозиторий в систему:
sudo add-apt-repository ppa:ondrej/php
sudo apt update
Теперь мы можем установить любой нужный релиз, явно указав его номер в команде. Например, для установки 8.0:
sudo apt install php8.0
Или для 7.4:
sudo apt install php7.4
Важный момент: Установка нового релиза через PPA не удаляет и не конфликтует с уже установленными. В системе могут одновременно существовать несколько (например, 7.4, 8.0 и 8.1), между которыми можно переключаться в зависимости от требований проекта. Это особенно удобно при поддержке нескольких приложений с разными зависимостями.
Проверить установленный релиз можно командой:
php8.0 -v
Обратите внимание, что для каждого релиза используется свой исполняемый файл с указанием номера в имени.
Как установить и активировать расширения PHP
Сам по себе интерпретатор представляет довольно минималистичный инструмент. Большая часть его функциональности реализуется через расширения (модули) — отдельные компоненты, которые добавляют поддержку работы с базами данных, обработки изображений, криптографии и многих других задач. Без необходимых расширений даже простое веб-приложение может отказаться запускаться.
Наиболее востребованные расширения:
| Расширение | Назначение | Типичное применение |
| php-mysql | Работа с MySQL/MariaDB | WordPress, Laravel, любые приложения с MySQL |
| php-curl | HTTP-запросы через библиотеку cURL | API-интеграции, работа с внешними сервисами |
| php-gd | Обработка изображений (GD Library) | Генерация thumbnail, водяные знаки |
| php-mbstring | Многобайтовые строки (UTF-8, кириллица) | Обязательно для работы с не-ASCII текстом |
| php-xml | Парсинг и генерация XML | RSS-ленты, SOAP-сервисы, sitemap |
| php-zip | Работа с ZIP-архивами | Импорт/экспорт данных, бэкапы |
| php-intl | Интернационализация | Локализация дат, валют, сортировка |
| php-imagick | ImageMagick для PHP | Профессиональная обработка графики |

Диаграмма показывает, какие расширения PHP используются чаще всего в реальных проектах. Она помогает понять, какие модули стоит установить в первую очередь. Это снижает риск ошибок при запуске веб-приложений.
Для установки расширений для релиза по умолчанию используется простая команда:
sudo apt install php-mysql php-curl php-gd php-mbstring php-xml php-zip
Однако если в системе установлено несколько релизов, необходимо явно указывать номер в названии пакета. Например, для установки расширений для 7.4:
sudo apt install php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-zip php7.4-intl
Аналогично для 8.0:
sudo apt install php8.0-mysql php8.0-curl php8.0-gd php8.0-mbstring php8.0-xml php8.0-zip php8.0-intl
После установки расширений можно проверить список активных модулей командой:
php -m
Эта команда выведет полный список загруженных расширений. Если вы устанавливали модули для конкретного релиза, используйте соответствующую команду:
php7.4 -m
Стоит отметить, что некоторые расширения после установки требуют дополнительной настройки через конфигурационные файлы в /etc/php/[номер]/, но в большинстве случаев они готовы к работе сразу после установки.
Как переключаться между версиями (если установлено несколько)
Одна из сильных сторон описанного выше подхода с использованием PPA — возможность держать в системе несколько релизов одновременно. Это критически важно, когда мы поддерживаем legacy-приложения, которые не совместимы с современным языком, и при этом разрабатываем новые проекты на актуальном стеке технологий.
Для управления релизом, используемым по умолчанию в командной строке, Ubuntu предоставляет утилиту update-alternatives. Она позволяет переключаться между различными вариантами установленного программного обеспечения без необходимости удаления или переустановки пакетов.
Чтобы увидеть список всех доступных релизов в системе и выбрать активный, выполняем команду:
sudo update-alternatives --config php
Система отобразит интерактивное меню со всеми установленными релизами. Вам будет предложено ввести номер, который вы хотите использовать по умолчанию:
There are 3 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/php8.1 81 auto mode 1 /usr/bin/php7.4 74 manual mode 2 /usr/bin/php8.0 80 manual mode 3 /usr/bin/php8.1 81 manual mode Press to keep the current choice[*], or type selection number:
Если вы хотите установить конкретный релиз без интерактивного выбора, используйте команду с параметром —set:
sudo update-alternatives --set php /usr/bin/php7.4
Однако переключение в командной строке — это только половина задачи. Для веб-приложений, работающих через Apache, необходимо также переключить соответствующий модуль. Apache использует отдельные модули для каждого релиза, и только один из них может быть активен одновременно.
Для переключения с 8.1 на 7.4 в Apache выполняем следующие команды:
sudo a2dismod php8.1 sudo a2enmod php7.4 sudo systemctl restart apache2
Первая команда отключает модуль текущего релиза, вторая — активирует нужный, третья — перезапускает веб-сервер для применения изменений.
Если вы используете Nginx с PHP-FPM, процесс несколько отличается. В этом случае необходимо изменить путь к сокету в конфигурации Nginx, указав нужный релиз (например, /var/run/php/php7.4-fpm.sock вместо /var/run/php/php8.1-fpm.sock), а затем перезапустить оба сервиса.
Настройка PHP в связке с веб-сервером (Apache или Nginx)
Установка интерпретатора — это лишь первый шаг. Чтобы скрипты могли обрабатываться веб-сервером и отдавать динамический контент пользователям, необходимо настроить интеграцию между интерпретатором и веб-сервером. Подход к интеграции различается в зависимости от того, используете ли вы Apache или Nginx.
Вариант с Apache
Apache использует модульную архитектуру, что делает интеграцию максимально простой. Для работы в Apache достаточно установить соответствующий модуль, который встраивает интерпретатор непосредственно в процесс веб-сервера.
Устанавливаем модуль Apache для нужного релиза:
sudo apt install libapache2-mod-php
Если вы работаете с конкретным релизом, указываем его явно:
sudo apt install libapache2-mod-php7.4
После установки модуль обычно активируется автоматически, но мы можем проверить и активировать его вручную:
sudo a2enmod php7.4
Перезапускаем Apache для применения изменений:
sudo systemctl restart apache2
Теперь Apache готов обрабатывать файлы с расширением .php. При запросе к такому файлу веб-сервер автоматически передаст его интерпретатору для выполнения.
Вариант с Nginx (через PHP-FPM)
Nginx, в отличие от Apache, не имеет встроенной поддержки выполнения скриптов. Вместо этого он использует протокол FastCGI для взаимодействия с отдельным процессом PHP-FPM (FastCGI Process Manager). Этот подход обеспечивает лучшую изоляцию и производительность, но требует дополнительной настройки.
Устанавливаем PHP-FPM для нужного релиза:
sudo apt install php8.0-fpm
После установки сервис автоматически запускается. Проверяем его статус:
sudo systemctl status php8.0-fpm
Теперь необходимо настроить Nginx для передачи запросов в PHP-FPM. Открываем конфигурационный файл вашего сайта (обычно в /etc/nginx/sites-available/) и добавляем блок обработки:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
}
Ключевой момент здесь — путь к сокету PHP-FPM. Для разных релизов путь будет различаться (например, php7.4-fpm.sock или php8.1-fpm.sock). Убедитесь, что указанный путь соответствует установленному релизу.
После внесения изменений проверяем корректность конфигурации Nginx:
sudo nginx -t
Если тест успешен, перезагружаем Nginx:
sudo systemctl reload nginx
Для тестирования работы создаём файл info.php в корневой директории веб-сервера (обычно /var/www/html/):
<?php phpinfo(); ?>
Открываем в браузере http://your-server-ip/info.php — если всё настроено правильно, вы увидите подробную информацию о конфигурации.
Как протестировать, что PHP работает правильно
После установки и настройки необходимо убедиться, что интерпретатор функционирует корректно как в командной строке, так и в связке с веб-сервером. Мы рекомендуем проводить проверку на нескольких уровнях, чтобы исключить возможные проблемы в продакшене.
Проверка в командной строке:
Самый быстрый способ убедиться, что интерпретатор установлен и доступен — проверить его релиз:
php -v
Эта команда выведет информацию о релизе, дате сборки и установленном движке Zend. Если команда выполняется без ошибок, интерпретатор установлен правильно.
Для проверки загруженных расширений используем:
php -m
Команда выведет список всех активных модулей. Убедитесь, что необходимые вам расширения присутствуют в этом списке.
Проверка через веб-сервер:
Для тестирования работы в связке с Apache или Nginx создаём специальный тестовый файл. Переходим в корневую директорию веб-сервера и создаём файл info.php:
sudo nano /var/www/html/info.php
Добавляем в него следующий код:
<?php phpinfo(); ?>
Сохраняем файл и открываем в браузере адрес http://localhost/info.php (или http://your-server-ip/info.php для удалённого сервера).
Если всё настроено правильно, вы увидите подробную страницу с информацией о конфигурации: релизом интерпретатора, загруженными расширениями, директивами php.ini, переменными окружения и многим другим. Эта страница — ценный инструмент диагностики, позволяющий быстро определить, какие модули активны и какие настройки применены.
Важно: После проверки обязательно удалите файл info.php из публичной директории, так как он раскрывает детальную информацию о конфигурации сервера, что может представлять угрозу безопасности:
sudo rm /var/www/html/info.php
Эти простые тесты позволяют нам убедиться, что всё полностью функционально и готово к работе с вашими приложениями.
Частые ошибки при установке и их решение
Даже при следовании инструкциям процесс установки может столкнуться с различными проблемами — от банальных опечаток в командах до конфликтов между пакетами. Мы собрали наиболее распространённые ошибки и их решения, чтобы сэкономить ваше время на отладке.
| Ошибка | Возможная причина | Решение |
| php: command not found | Интерпретатор не установлен или не добавлен в PATH | Проверьте установку: sudo apt install php. Убедитесь, что /usr/bin/php существует |
| apache2: Module php7.x does not exist | Модуль Apache не установлен или имя модуля указано неверно | Установите модуль: sudo apt install libapache2-mod-php7.4. Проверьте доступные модули: ls /etc/apache2/mods-available/ |
| Package ‘php5.6’ has no installation candidate | Репозиторий PPA не добавлен или не обновлён | Добавьте PPA: sudo add-apt-repository ppa:ondrej/php, затем sudo apt update |
| Конфликт релизов при запуске скриптов | Несколько релизов установлены, но активирован не тот | Переключите через sudo update-alternatives и проверьте модули Apache командой apache2ctl -M |
| 502 Bad Gateway при использовании Nginx | PHP-FPM не запущен или указан неверный путь к сокету | Проверьте статус: sudo systemctl status php8.0-fpm. Убедитесь, что путь в конфигурации Nginx совпадает с реальным: /var/run/php/php8.0-fpm.sock |
| Расширения не загружаются | Расширения установлены для другого релиза | Установите расширения для активного релиза: sudo apt install php8.0-mysql php8.0-curl |
Дополнительные рекомендации по диагностике:
Если после установки скрипты не выполняются, а браузер предлагает скачать .php файлы вместо их обработки, проблема почти наверняка в неправильной конфигурации веб-сервера. Для Apache убедитесь, что модуль активирован командой apache2ctl -M | grep php. Для Nginx проверьте, что в конфигурации присутствует корректный блок location ~ .php$ с указанием на PHP-FPM.
При конфликтах релизов часто помогает полная очистка конфигурации. Для этого можно удалить все варианты командой sudo apt purge ‘php*’, очистить остатки конфигурационных файлов и выполнить чистую установку нужного релиза. Однако этот радикальный метод мы рекомендуем только в крайних случаях, когда другие решения не помогли.
Возникает вопрос: стоит ли держать в системе несколько релизов одновременно? С одной стороны, это даёт гибкость при работе с разными проектами. С другой — увеличивает вероятность конфликтов и усложняет поддержку окружения. Наш опыт показывает, что оптимальный подход — использовать контейнеризацию (Docker) для изоляции разных окружений, а на хост-системе держать только один основной релиз.
Заключение
Установка и настройка PHP в Ubuntu — процесс, который на первый взгляд может показаться сложным, но при системном подходе становится вполне понятным и предсказуемым. Давайте подведём итоги:
- Выбор версии php в ubuntu влияет на безопасность и совместимость. Важно учитывать поддержку релиза и требования проекта.
- Установка из официальных репозиториев подходит для стандартных задач. Этот способ обеспечивает стабильность и простоту настройки.
- Использование ppa-репозитория позволяет установить нужный релиз php. Это удобно для тестирования и поддержки legacy-проектов.
- Расширения php добавляют ключевую функциональность. Без них многие веб-приложения не смогут корректно работать.
- При наличии нескольких версий важно правильно переключать интерпретатор. Отдельно настраиваются cli и веб-сервер.
- Интеграция php с apache проще в настройке. Nginx требует конфигурации php-fpm, но даёт лучшую гибкость.
- Тестирование через phpinfo помогает убедиться в корректности установки. После проверки файл необходимо удалить из соображений безопасности.
- Большинство ошибок связано с конфликтами версий и отсутствием модулей. Их можно устранить через проверку сервисов и конфигурации.
Если вы только начинаете осваивать профессию веб-разработчика, рекомендуем обратить внимание на курсы по PHP-разработке. В таких программах обычно есть и теоретическая, и практическая часть, что помогает быстрее разобраться с установкой окружения и запуском проектов.
Рекомендуем посмотреть курсы по программированию на PHP
| Курс | Школа | Цена | Рассрочка | Длительность | Дата начала | Ссылка на курс |
|---|---|---|---|---|---|---|
|
Frontend-разработчик
|
Eduson Academy
100 отзывов
|
Цена
Ещё -5% по промокоду
107 760 ₽
|
От
8 980 ₽/мес
|
Длительность
12 месяцев
|
Старт
6 февраля
|
Подробнее |
|
Frontend-разработчик
|
Нетология
46 отзывов
|
Цена
с промокодом kursy-online
128 800 ₽
238 574 ₽
|
От
3 976 ₽/мес
На 2 года
|
Длительность
13 месяцев
|
Старт
5 февраля
|
Подробнее |
|
PHP-разработчик. Базовый уровень
|
Skillbox
219 отзывов
|
Цена
Ещё -20% по промокоду
80 990 ₽
161 979 ₽
|
От
6 749 ₽/мес
Без переплат на 1 год.
|
Длительность
3 месяца
|
Старт
7 февраля
|
Подробнее |
|
Профессия: ВЕБ-разработчик
|
ProductStar
41 отзыв
|
Цена
Ещё -16% по промокоду
129 600 ₽
288 000 ₽
|
От
5 520 ₽/мес
Рассрочка на 2 года.
11 600 ₽/мес
|
Длительность
10 месяцев
|
Старт
5 февраля
|
Подробнее |
|
Веб-разработчик с нуля
|
Нетология
46 отзывов
|
Цена
с промокодом kursy-online
163 300 ₽
302 470 ₽
|
От
5 041 ₽/мес
Без переплат на 2 года.
7 222 ₽/мес
|
Длительность
17 месяцев
|
Старт
5 февраля
|
Подробнее |
Интеграционное тестирование: основы, подходы, примеры
Интеграционное тестирование проверяет взаимодействие модулей системы. Узнайте, какие подходы и инструменты помогут избежать ошибок и улучшить архитектуру.
Леттеринг для дизайнеров и не только: как творчество становится работой
Красивые буквы – это не только искусство, но и востребованный инструмент в дизайне. Хотите освоить леттеринг и найти применение своим навыкам? Разбираем основы, стили и способы заработка на этом креативном направлении.
Что такое тестирование доступности сайта и зачем оно нужно?
Доступность веб-сайтов — это не просто модный тренд, а важная составляющая успешного бизнеса. Узнайте, как тестировать доступность и применять лучшие практики.