Акции и промокоды Отзывы о школах

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

# Блог

PHP остается одним из самых востребованных языков серверной разработки, несмотря на появление новых конкурентов. Согласно данным W3Techs, более 77% всех веб-сайтов используют этот язык в той или иной форме. Установка и настройка PHP на Ubuntu — базовый навык для любого разработчика или системного администратора, работающего с веб-приложениями. В этом руководстве мы рассмотрим все аспекты установки: от выбора релиза до интеграции с веб-сервером и настройки необходимых расширений.

Какие версии 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


Майнд-карта отражает общую структуру процесса установки и настройки 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.

Страница PPA-репозитория Ondřej Surý.

Скриншот страницы репозитория с перечнем поддерживаемых версий 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 популярность


Диаграмма показывает, какие расширения 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-разработке. В таких программах обычно есть и теоретическая, и практическая часть, что помогает быстрее разобраться с установкой окружения и запуском проектов.

Читайте также
# Блог

Леттеринг для дизайнеров и не только: как творчество становится работой

Красивые буквы – это не только искусство, но и востребованный инструмент в дизайне. Хотите освоить леттеринг и найти применение своим навыкам? Разбираем основы, стили и способы заработка на этом креативном направлении.

Категории курсов