澄清phar文件

时间:2014-11-18 10:49:44

标签: php phar

我需要澄清php phar文件管理,因为我没有找到预期的文档。

更深入我有一个像这样的简单项目

[main.php]
<?
include_once("./helloworld.php");
helloworld();
?>

[helloworld.php]
<?
function helloworld() {
    echo "Hello World\n";
}
?>

然后我用这样的脚本创建一个phar文件:

[buildphar.php]
<?
$pharfile = '/home/stefano/test.phar';
if (file_exists($pharfile)) unlink($pharfile);
$phar = new Phar(
   $pharfile,
   FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME,
   "test.phar"
);
$phar->startBuffering();
$phar['main.php'] = php_strip_whitespace("main.php");
$phar['helloworld.php'] = php_strip_whitespace("helloworls.php");
$phar->setStub($phar->createDefaultStub("main"));
$phar->stopBuffering();

如果我将[buildphar.php]分发给另一台机器并尝试运行它

php buildphar.php

给出的错误是&#34;致命错误:功能&#39; helloworld&#39;在phar://(...)&#34;中找不到所以问题是: - 我如何保留include_once(&#39; helloword.php&#39;)但是从phar文件中删除它们,知道该函数是否嵌入到phar文件中而不需要包括在内? - 我的做法有什么不对?

谢谢任何人。 斯特凡诺

1 个答案:

答案 0 :(得分:1)

您提供的代码不起作用。此外,分发buildphar.php没有意义 - 您可能意味着分发.phar文件。

你可以通过phar存根中的Phar::interceptFileFuncs()来解决你所面临的问题(包括不起作用)。