将Web应用程序(ZF2)转换为PHAR

cod*_*.sj 5 php zend-framework phar zend-framework2

我知道如何将php文件转换为phar文件.

$phar = new PHAR('app.phar');
$phar->addFile('file1.php');
$phar->addFile('file2.php');
Run Code Online (Sandbox Code Playgroud)

我认为它只对将POPO转换为PHAR非常有用.

我的问题

是否可以将整个Zend框架2 Web应用程序转换为PHAR文件?如果是,那怎么样?

(要么)

如何将Zend framework2 Web应用程序打包到一个包中?(.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();
    ?>");
Run Code Online (Sandbox Code Playgroud)

的index.php

<?php
include 'project.phar';
?>
Run Code Online (Sandbox Code Playgroud)

题:

当我运行index.php时,它不会重定向到实际的public/index.php文件,而是在浏览器上显示空白页面.我该如何解决这个问题?

提前致谢

cwe*_*ske 5

我将phorkie部署为.phar文件.

有一些事情需要考虑:

  1. 打包.phar-php和静态资产文件(js,css,png,jpg)中的所有文件.我用phing来做那件事.不要忘记依赖项.
  2. 您需要一个运行的存根文件,负责Phar::webPhar()发送HTTP标头
  3. 编写自己的.htaccess重写规则解释器,因为Phar::webPhar()它不会自行解决好路径.我已经这样做了.
  4. 手动处理发送静态文件的缓存头
  5. 希望您(或您的用户)不会遇到其中一个Phar::webPhar错误:
    1. 符号链接文件
    2. 没有HEAD,PUT或DELETE支持
    3. 使用FPM重定向循环(已在git中修复)
  6. 希望您的用户的Web服务器处理.phar文件(它不会; Debian 和Fedora 没有提供该配置)
  7. 希望用户的Web服务器正确配置为处理.phar带有PATH_INFOattach(/path/to/file.phar/foo/bar.png)的文件,如http://p.cweiske.de/122

让phorkie跑出来.phar让我度过了两个星期的晚上.现在它基本上工作了它仍然不是一个drop-phar-and-play解决方案,因为Web服务器的默认配置只是不好用.phar.