4

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

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 格式以便于部署。

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

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

php <just_deployed_phar_file>

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

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

4

1 回答 1

1

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

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

于 2012-10-03T06:24:11.980 回答