【问题标题】:Phar archive and stub file usagePhar 归档和存根文件的使用
【发布时间】:2012-09-10 18:03:29
【问题描述】:

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

php <phar_file_deployed_on_server>.phar

此命令在 phar 存档外部生成一个 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();

?>

以上不屑一顾的规则是一个例子。

我的想法是针对简单的部署过程。示例提供了检查 $_GET 数组,但在部署期间可能会生成更复杂的规则(例如通过命令行参数)。

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

应用程序无需解压即可在产品上执行 机器,因为我已经计划了一个链接到 Phar 档案中的应用程序。

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

php <just_deployed_phar_file>

存根文件内的代码以方式生成index.php文件 参考刚刚安装的 Phar 存档。

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

【问题讨论】:

  • 您至少应该展示一些正在执行您描述的其他工作的代码,这很难从您的问题中说出来。
  • 您可以在此处获取有关存根的一些信息:php.net/manual/en/phar.fileformat.stub.php 您基本上可以在存根中做任何您想做的事情,但默认存根会启动 index.php 您的问题目前还不够清楚。

标签: php deployment stub phar


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-09
    • 2017-02-02
    • 2015-04-10
    • 2013-02-20
    • 2012-10-11
    • 2013-10-31
    • 2014-04-21
    相关资源
    最近更新 更多