Упаковка в phar

phar — это разновидность упаковочного файла в PHP, аналогичный JAR. С его помощью можно упаковать проект webman в один phar-файл для удобного развёртывания.

Большое спасибо fuzqing за PR.

Обратите внимание
Необходимо отключить опцию конфигурации phar в php.ini, установив phar.readonly = 0.

Установка командной строки

composer require webman/console

Упаковка

Запустите команду php webman build:phar в корневом каталоге проекта webman. В каталоге build будет создан файл webman.phar.

Настройки упаковки находятся в файле config/plugin/webman/console/app.php.

Команды запуска и остановки

Запуск
php webman.phar start или php webman.phar start -d

Остановка
php webman.phar stop

Просмотр статуса
php webman.phar status

Просмотр статуса соединения
php webman.phar connections

Перезапуск
php webman.phar restart или php webman.phar restart -d

Примечания

  • Упакованные проекты не поддерживают reload; для обновления кода требуется перезапуск.

  • Чтобы избежать излишнего размера упаковки и потребления памяти, можно настроить опции exclude_pattern и exclude_files в config/plugin/webman/console/app.php для исключения ненужных файлов.

  • После запуска webman.phar в каталоге, где находится webman.phar, будет создан каталог runtime для временных файлов, таких как журналы.

  • Если ваш проект использует файл .env, необходимо поместить файл .env в каталог, где находится webman.phar.

  • Никогда не храните файлы, загруженные пользователями, внутри phar-пакета, так как операции с такими файлами по протоколу phar:// представляют серьёзную угрозу (уязвимость десериализации Phar). Файлы пользователей должны храниться отдельно на диске вне phar-пакета. См. ниже.

  • Если для вашего бизнеса требуется загрузка файлов в каталог public, его необходимо извлечь и разместить в каталоге, где находится webman.phar. В этом случае необходимо настроить config/app.php.

    'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',

    Бизнес-логика может использовать вспомогательную функцию public_path($относительный_путь) для нахождения фактического расположения каталога public.

  • webman.phar не поддерживает настраиваемые процессы в Windows.