Phar存档和存根文件用法

时间:2012-09-18 13:02:21

标签: php deployment stub phar

我尝试根据命令定义部署过程:

php <phar_file_deployed_on_server>.phar

此命令生成phar archive外部的index.php文件。

index.php文件将充当phar存档中N-file.php的“瘦”调度程序。

生成的index.php文件示例:

<?

$requiredFile = "phar://<phar_file_deployed_on_server>.phar";

/**
 * For example index.php can check $_GET array and dispatch 
 * to file inside Phar archive.
 **/
if (array_key_exists("getParameter", $_GET))
    $requiredFile = $requiredFile . "/" . $_GET['getParameter'] . ".php";
else
    <handling_of_else_condition>;

require_once $requiredFile;

__HALT_COMPILER();

?>

上述调度规则就是一个例子。

我的想法仅面向部署过程。该示例提供了check $ _GET数组,但在部署期间可能会生成更复杂的规则(例如,通过命令行参数)。

  

我创建了一个PHP Web应用程序并将其压缩到Phar   格式易于部署。

     

可以在生产中无需解压缩的情况下执行应用程序   机器,因为我已经计划了一个链接到的index.php文件   在Phar档案中的应用程序。

     

要在部署期间生成index.php文件,有必要   将以下命令启动到生产机器shell中:

php <just_deployed_phar_file>
     

存根文件中的代码以方式生成index.php文件   引用刚刚安装的Phar存档。

     

这是使用存根文件的正确方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用存根文件执行您想要执行的任何操作。执行phar时(使用php xxx.phar) 如果我的问题是正确的,那么您计划将phar文件用作整个应用程序的安装程序。它安装index.php,然后使用phar加载您的应用程序。这样做会有所作为,但还有更好的方法:

我认为你正在搜索webPhar,它就像你的应用程序的前控制器一样。如果您在phar的存根中使用webPhar(),则来自您的网络服务器的请求将被路由到您的phar。