FrankenPHP позволяет встраивать исходный код и ресурсы PHP-приложений в статический автономный бинарный файл.
Благодаря этой функции PHP-приложения могут распространяться как автономные бинарные файлы, которые содержат само приложение, интерпретатор PHP и Caddy — веб-сервер уровня продакшн.
Подробнее об этой функции [в презентации Кевина на SymfonyCon 2023](https://dunglas.dev/2023/12/php-and-symfony-apps-as-standalone-binaries/).
Для встраивания Laravel-приложений ознакомьтесь с [документацией](laravel.md#laravel-приложения-как-автономные-бинарные-файлы).
## Подготовка приложения
Перед созданием автономного бинарного файла убедитесь, что ваше приложение готово для встраивания.
Например, вам может понадобиться:
- Установить продакшн-зависимости приложения.
- Сгенерировать автозагрузчик.
- Включить продакшн-режим приложения (если он есть).
- Удалить ненужные файлы, такие как `.git` или тесты, чтобы уменьшить размер итогового бинарного файла.
Для приложения на Symfony это может выглядеть так:
```console
# Экспорт проекта, чтобы избавиться от .git/ и других ненужных файлов
mkdir $TMPDIR/my-prepared-app
git archive HEAD | tar -x -C $TMPDIR/my-prepared-app
cd $TMPDIR/my-prepared-app
# Установить соответствующие переменные окружения
echo APP_ENV=prod > .env.local
echo APP_DEBUG=0 >> .env.local
# Удалить тесты и другие ненужные файлы
rm -Rf tests/
# Установить зависимости
composer install --ignore-platform-reqs --no-dev -a
# Оптимизировать .env
composer dump-env prod
```
### Настройка конфигурации
Чтобы настроить [конфигурацию](config.md), вы можете разместить файлы `Caddyfile` и `php.ini` в основной директории приложения (`$TMPDIR/my-prepared-app` в примере выше).
## Создание бинарного файла для Linux
Самый простой способ создать бинарный файл для Linux — использовать предоставленный Docker-билдер.
1. Создайте файл `static-build.Dockerfile` в репозитории вашего приложения: