Что такое PHAR (PHP Archive)?

«Что такое PHAR (PHP Archive)?» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

PHAR (PHP Archive) — это формат упаковки PHP-приложений, библиотек или утилит в единый исполняемый файл, аналогичный JAR в Java. Файл .phar содержит весь необходимый код, ресурсы и метаданные, что упрощает распространение и развертывание.

Основные возможности:

  • Исполняемость: PHAR-файл можно запустить как обычный PHP-скрипт: php myapp.phar.
  • Сжатие: Поддержка сжатия gzip или bzip2 для уменьшения размера.
  • Встроенный загрузчик (stub): Автоматическая загрузка содержимого архива.

Пример создания простого PHAR-архива:

// create-phar.php
$pharFile = 'myapp.phar';

// Убедитесь, что phar.readonly=Off в php.ini
if (file_exists($pharFile)) {
    unlink($pharFile);
}

$phar = new Phar($pharFile);
// Добавляем все файлы из директории src/
$phar->buildFromDirectory(__DIR__ . '/src');
// Устанавливаем точку входа (файл, который запустится при выполнении)
$phar->setDefaultStub('index.php');

Где я с этим сталкивался: Многие популярные инструменты экосистемы PHP распространяются именно в виде PHAR-файлов, что делает их установку тривиальной — просто скачать один файл. Например:

  • Composer (composer.phar)
  • PHPUnit
  • Psalm или PHPStan (статические анализаторы)

При разработке внутренних CLI-инструментов для компании мы также использовали PHAR для упаковки, что значительно упрощало их доставку на продакшн-сервера — не нужно было копировать целые директории с зависимостями, только один файл.