Преобразование веб-приложения (ZF2) в PHAR

Я знаю, как преобразовать файл php в файл phar.

$phar = new PHAR('app.phar');
$phar->addFile('file1.php');
$phar->addFile('file2.php');

Я думал, что это может быть полезно только для преобразования POPO в PHAR.

Мой вопрос

Можно ли преобразовать все веб-приложение Zend framework 2 в файл PHAR? если да, то как?

(or)

Как упаковать веб-приложение Zend framework2 в пакет? (кроме формата файла .zpk (файл пакета Zend Studio))


Обновлено: создание Phar из всего приложения

создать-phar.php

$basePath = /path/to/;
$path = /path/to/application;  
$phar = new Phar ('project.phar');    
$phar->buildFromIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)), $basePath);
$phar->setStub("<?php 
    Phar::webPhar('project', 'public/index.php');
       include 'phar://project/public/index.php';
       __HALT_COMPILER();
    ?>");

index.php

<?php
include 'project.phar';
?>

Вопрос:

Когда я запускаю index.php, он не перенаправляется на фактический файл public/index.php, вместо этого он показывает пустую страницу в браузере. Как я могу решить эту проблему?

заранее спасибо


person codeninja.sj    schedule 22.07.2014    source источник
comment
Посмотрите здесь. Также ИМХО упаковка всего приложения - не очень хорошая идея. Во-первых, во времена композитора будет сложнее разрабатывать, а во-вторых, насколько я знаю, APC не поддерживает phar, так что вы столкнетесь с большим узким местом в производительности.   -  person ex3v    schedule 22.07.2014
comment
Мне нравится ваш вопрос, это будет полезно разработчикам, которые хотят скрыть свой код, чтобы доставить его компаниям.   -  person peterpeterson    schedule 22.07.2014
comment
@BrunoQuintanaFleitas Не совсем   -  person ex3v    schedule 22.07.2014


Ответы (1)


Я развертываю phorkie в виде .phar файла.

Есть некоторые вещи, которые следует учитывать:

  1. Упакуйте все файлы в .phar - файлы php и статических ресурсов (js, css, png, jpg) тоже. Для этого я использую phing. Не забывайте о зависимостях.
  2. Вам нужен файл stub, который запускает Phar::webPhar(), который отвечает за отправку заголовков HTTP.
  3. Напишите свой собственный .htaccess интерпретатор правил перезаписи, потому что Phar::webPhar() не выполняет самостоятельное преобразование пути. Я уже сделал это.
  4. Вручную позаботьтесь об отправке заголовков кэширования для статических файлов.
  5. Hope that you (or your users) don't run into one of the Phar::webPhar bugs:
    1. Symlinked files
    2. Нет поддержки HEAD, PUT или DELETE
    3. Цикл перенаправления с FPM (уже исправлено в git)
  6. Надеемся, что веб-сервер вашего пользователя обрабатывает .phar файлов (не будет; ни Debian и Fedora не поставляет эту конфигурацию)
  7. Надеемся, что веб-сервер пользователя правильно настроен для обработки .phar файлов с добавлением PATH_INFO (/path/to/file.phar/foo/bar.png), как в http://p.cweiske.de/122

На то, чтобы заставить форки бежать из .phar, у меня ушло две недели по вечерам. Теперь, когда он в основном работает, он по-прежнему не является простым решением, потому что конфигурация веб-серверов по умолчанию просто не работает с .phar.

person cweiske    schedule 22.07.2014
comment
Привет cweiske, спасибо за ваш ответ. и надеюсь, что это может решить мою проблему. - person codeninja.sj; 22.07.2014
comment
Я приму ваш ответ, как только создам свой собственный файл zf2 phar.btw ++ для вашего ответа - person codeninja.sj; 22.07.2014
comment
Привет @cweiske, не могли бы вы помочь мне установить заглушку для моего файла create-phar.php? и я обновил свой вопрос, пожалуйста, посмотрите на это - person codeninja.sj; 23.07.2014