Ответ
PECL (PHP Extension Community Library) — это репозиторий и система распространения бинарных расширений PHP, написанных на C. Эти расширения компилируются в виде .so (Linux/macOS) или .dll (Windows) файлов и напрямую интегрируются в ядро PHP, предоставляя высокопроизводительную низкоуровневую функциональность.
Ключевые отличия от Composer (который управляет PHP-кодом):
- PECL расширения — это скомпилированный C-код, а Composer пакеты — это PHP-скрипты.
- Установка PECL расширения требует наличия компилятора и заголовочных файлов PHP (
php-dev). - Расширения нужно пересобирать при обновлении основной версии PHP.
Пример установки расширения redis:
pecl install redis
После установки необходимо добавить строку в файл php.ini:
extension=redis.so
# или для Windows
extension=php_redis.dll
Популярные расширения из PECL, которые я использовал в работе:
xdebug— незаменим для отладки и профилирования кода.redis— высокопроизводительный клиент для работы с Redis.imagick— мощная библиотека для обработки изображений (альтернатива GD).pcov— быстрый драйвер для покрытия кода (code coverage).
Для управления расширениями в Docker-образах я обычно использую команды docker-php-ext-install (для core-расширений) и pecl install с последующим docker-php-ext-enable.
Ответ 18+ 🔞
Блин, слушай, про PECL надо поговорить, потому что народ часто путает его с Composer'ом, а это, ёпта, вообще разные вселенные.
PECL — это, грубо говоря, такая штука, где лежат бинарные расширения для PHP, написанные на чистом C. Они компилируются в файлы .so (под линукс) или .dll (под винду) и встраиваются прямо в ядро PHP. Это даёт овердохуища производительности, потому что это не скрипты, а скомпилированный низкоуровневый код.
Чем это не Composer, спросишь ты? А вот чем, ядрёна вошь:
- Composer таскает пакеты с PHP-кодом, а PECL — это скомпилированный C-код. Разница, как между велосипедом и ракетой.
- Чтобы поставить расширение из PECL, тебе нужен компилятор и заголовочные файлы PHP (этот
php-devпакет). Без них — доверия ебать ноль, нихуя не соберётся. - Самое главное — при каждом мажорном обновлении PHP (скажем, с 8.1 на 8.2) эти расширения надо пересобирать заново. Иначе всё накроется медным тазом.
Вот, например, как ставится расширение redis, если ты вдруг решил кэшировать всё подряд:
pecl install redis
И после этого, внимание, хитрая жопа — надо не забыть прописать в php.ini:
extension=redis.so
# или для Windows
extension=php_redis.dll
Если забудешь — расширение просто не подгрузится, и ты будешь чесать репу, почему класс Redis не находится.
Из того, что реально полезно и я сам юзал, могу выделить:
xdebug— это святое. Без него отладка — это пиздопроебибна. Тыкаешь вслепую, как мартышлюшка.redis— клиент для Редиса, быстрый, как хуй с горы.imagick— для работы с картинками. Мощнее встроенного GD, просто терпения ноль ебать, пока разберёшься со всеми форматами.pcov— для сбора покрытия кода. Работает быстрее, чем xdebug в этом режиме, просто ни хуя себе.
Когда дело доходит до Docker-образов, там обычно всё через команды docker-php-ext-install (для базовых расширений вроде pdo_mysql) и связку pecl install + docker-php-ext-enable. Главное — не накосячить с зависимостями, а то будет вам хиросима и нигерсраки при сборке.