我需要澄清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文件中而不需要包括在内? - 我的做法有什么不对?
谢谢任何人。 斯特凡诺
答案 0 :(得分:1)
您提供的代码不起作用。此外,分发buildphar.php
没有意义 - 您可能意味着分发.phar
文件。
你可以通过phar存根中的Phar::interceptFileFuncs()
来解决你所面临的问题(包括不起作用)。