|
|
|||||||||||||||||||||||||||||
|
Самоисполняемый phar как способ распространения веб-приложенийИсточник: habrahabr nazarpc
Как уже, наверное, всем известно, в PHP 5.3 появилась поддержка специального типа архивов с расширением .phar. Те, кто не в курсе - могут почитать отличную статью .phar - исполняемые PHP-архивы
Постановка задачиЦель - получить на выходе один файл, который будет сам по себе исполняемым, и будет содержать в себе все нужные файлы. Если провести аналогию c обычными приложениями - это приложение, которое запаковано в SFX (self-extracting archive). ТребованияПримеры в статье написаны для PHP 5.4 (но их легко подправить под 5.3), а так же используется PEAR библиотека Archive_Tar для создания нативных *.tar архивов. Возьмем для примера простейшую структуру: build.php index.php install.php readme.txt Естественно, файл install.php нужен только на этапе установки, а build.php только на этапе сборки. Файл readme.txt будем создавать на этапе сборки.
Создание tarСначала мы соберем нужные файлы в tar, это дает возможность обойти некоторые ограничения *.phar формата, например, недопустимость кириллицы в названии файла. Если использовать для этого Phar или PharData - придется переименовывать файлы в допустимый вид при запаковке, и обратно в исходный вид при распаковке. Создаем tar архив:
Расширение файла указано .phar.tar для того, чтобы php мог с ним работать. Добавляем файлы в архив:
Превращаем tar в pharСоздадим из полученного архива так называемый tar-based phar.
Делаем архив само исполняемымДля этого нужно задать файл, который будет открываться при попытке прямого доступа к файлу веб-сервером. По-умолчанию это index.php, но у нас установка, поэтому нужно открыть install.php
Странный формат .phar.php играет очень важную роль. Расширение .php заставляет передавать файл интерпретатору PHP, а .phar дает понять, что это архив, а не файл с исходным кодом. По-сути, архив превращается в директорию, например, можно ввести в адресной строке браузера /system.phar.php/index.php - и это будет работать.
УстановкаЛистинг install.php, который производит установку
И герой, ради которого затевалась вся кухня - index.php
Надеюсь, кому-то эта информация будет полезна, и всё больше продуктов будет поставляться не в виде zip/rar/tar/gz/bz2 архивов, а нативного phar, для чего он и был создан. Исходные файлы system.phar.php Ссылки по теме
|
|