我尝试根据命令定义部署过程:
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 存档的方式生成文件。这是使用存根文件的正确方法吗?