Установка PHP Devel на Ubuntu 20.04/22.04 - Пошаговая инструкция | AdminWiki

Установка PHP Devel на Ubuntu: Полное руководство для разработчиков

18 декабря 2025 5 мин. чтения #devops #linux #php разработка #php-devel #ubuntu #веб-разработка #установка php

Что такое PHP Devel и зачем он нужен?

Представь, что ты — разработчик, который хочет скомпилировать собственное PHP-расширение или отладить работу PHP на системном уровне. Вот здесь и появляется php-devel (или php-dev в некоторых дистрибутивах) — пакет, содержащий заголовочные файлы, библиотеки и инструменты для разработки расширений PHP.

Важно: В Ubuntu пакет называется php-dev, а не php-devel как в RHEL/CentOS. Это частая ошибка новичков.

Подготовка системы Ubuntu

Давай разберем процесс установки php-dev на Ubuntu шаг за шагом. Начнем с обновления системы:

bash
sudo apt update
sudo apt upgrade -y

Проверка установленного PHP

Сначала убедимся, какая версия PHP у тебя установлена:

bash
php --version

Установка PHP Devel (php-dev) на Ubuntu

Способ 1: Установка для конкретной версии PHP

Если у тебя уже установлен PHP, найди нужный пакет:

bash
# Для PHP 8.1
sudo apt install php8.1-dev

# Для PHP 8.2
sudo apt install php8.2-dev

# Для PHP 8.3
sudo apt install php8.3-dev

Способ 2: Установка PHP вместе с php-dev

Если PHP еще не установлен, можно установить все сразу:

bash
# Установка PHP 8.2 с наиболее распространенными модулями
sudo apt install php8.2 php8.2-dev php8.2-cli \
php8.2-common php8.2-mysql php8.2-zip \
php8.2-gd php8.2-mbstring php8.2-curl \
php8.2-xml php8.2-bcmath
Внимание: Убедись, что устанавливаешь версию php-dev, соответствующую твоей версии PHP. Несоответствие версий приведет к ошибкам компиляции.

Проверка установки php-devel

После установки убедимся, что все работает правильно:

bash
# Проверка установки phpize
phpize --version

# Проверка доступности заголовочных файлов
ls /usr/include/php*/

Что установилось с php-dev?

Компонент Назначение Путь
phpize Скрипт для подготовки расширений /usr/bin/phpize
php-config Конфигурация PHP для компиляции /usr/bin/php-config
Заголовочные файлы PHP API для разработки /usr/include/php8.x/

Практический пример: Компиляция PHP-расширения

Давай создадим простое расширение, чтобы понять процесс:

bash
# Создаем директорию для расширения
mkdir ~/my_php_extension
cd ~/my_php_extension

# Создаем config.m4 - конфигурационный файл расширения
echo 'PHP_ARG_ENABLE(myextension, whether to enable myextension support,
[  --enable-myextension          Enable myextension support])

if test "$PHP_MYEXTENSION" != "no"; then
  PHP_NEW_EXTENSION(myextension, myextension.c, $ext_shared)
fi' > config.m4

# Создаем основной файл расширения
echo '#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"

#define PHP_MYEXTENSION_VERSION "1.0"

PHP_FUNCTION(hello_world) {
    php_printf("Hello from my PHP extension!\n");
}

static const zend_function_entry myextension_functions[] = {
    PHP_FE(hello_world, NULL)
    PHP_FE_END
};

zend_module_entry myextension_module_entry = {
    STANDARD_MODULE_HEADER,
    "myextension",
    myextension_functions,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    PHP_MYEXTENSION_VERSION,
    STANDARD_MODULE_PROPERTIES
};

#ifdef COMPILE_DL_MYEXTENSION
ZEND_GET_MODULE(myextension)
#endif' > myextension.c
bash
# Используем phpize для подготовки расширения
phpize

# Конфигурируем
./configure

# Компилируем
make

# Устанавливаем
sudo make install

Распространенные проблемы и решения

Проблема 1: Пакет php-dev не найден

bash
# Решение: Добавить репозиторий Ondřej Surý
sudo add-apt-repository ppa:ondrej/php
sudo apt update
# Теперь пакеты будут доступны

Проблема 2: Отсутствуют зависимости для компиляции

bash
# Решение: Установить build-essential и другие инструменты
sudo apt install build-essential autoconf automake libtool \
flex bison re2c pkg-config

Проблема 3: Несколько версий PHP на одном сервере

Используй update-alternatives для управления версиями:

bash
# Настройка альтернатив для PHP
sudo update-alternatives --config php

# Выбери нужную версию из списка
# Затем установи соответствующий php-dev

Дополнительные инструменты для разработки PHP

Для полноценной разработки PHP-расширений рекомендую установить:

  • gdb — отладчик для поиска сложных ошибок
  • valgrind — инструмент для поиска утечек памяти
  • phpunit — тестирование расширений
  • phpdocumentor — документация кода
bash
# Установка полезных инструментов
sudo apt install gdb valgrind phpunit php-documentor

Часто задаваемые вопросы (FAQ)

В чем разница между php-devel и php-dev?

В Red Hat-based системах (RHEL, CentOS, Fedora) пакет называется php-devel, а в Debian-based (Ubuntu, Debian) — php-dev. Это один и тот же пакет с разными именами в разных дистрибутивах.

Нужно ли перезагружать сервер после установки php-dev?

Нет, перезагрузка сервера не требуется. Однако если ты используешь PHP-FPM, нужно перезапустить его службу: sudo systemctl restart php8.x-fpm.

Можно ли установить php-dev без установки самого PHP?

Технически можно, но это бессмысленно. php-dev содержит инструменты для работы с конкретной версией PHP, поэтому сначала должна быть установлена соответствующая версия PHP.

Как удалить php-dev с Ubuntu?

bash
sudo apt remove php8.x-dev
sudo apt autoremove

Какие файлы устанавливаются с php-dev?

Основные файлы: phpize, php-config, заголовочные файлы PHP в /usr/include/php8.x/, статические библиотеки и документация.

Поделиться:
Сохранить гайд? В закладки браузера