请解释如何创建PHP的Phar存根

|| 我正在尝试创建一个非常简单的PHP CLI应用程序,可以从命令行将其作为phar文件运行:
# php myProject.phar
到目前为止,这是我尝试过的: 我的项目 我的项目在一个名为ѭ1的目录中,并且其中包含以下两个文件:
 |-- createPhar.php
 `-- bootstrap.php
bootstrap.php
bootstrap.php
文件包含以下内容:
<?php
print phpversion() . PHP_EOL;
print \'i am some script\' . PHP_EOL;
当我从Ubuntu命令行运行此脚本时:
# cd MyProject 
# php bootstrap.php
我得到以下输出:
5.3.2-1ubuntu4.9
i am some script
createPhar.php createPhar.php文件旨在将项目转换为Phar存档。 看起来像这样:
<?php    
$phar = new Phar(\'MyProject.phar\');
$phar->addFile(\'bootstrap.php\');
$phar->setStub( $phar->createDefaultStub(\'bootstrap.php\') );
当我运行该脚本时...
# php createPhar.php
...在我的项目目录中创建了一个名为“ 9”的新文件。
|-- bootstrap.php
|-- createPhar.php
`-- MyProject.phar
现在这是问题所在 当我运行phar文件时...
# php MyProject.phar 
...我希望看到的是与运行
bootstrap.php
脚本时得到的输出相同的输出。 相反,我什么也没看到。完全没有输出。这意味着由
$phar->createDefaultStub(\'bootstrap.php\')
创建的默认存根未包含我的
bootstrap.php
脚本。 我想我误解了Phars及其存根的创建方式。请您解释一下我出了什么问题。     
已邀请:
        回答我自己的问题。 上面我的问题中概述的方法是创建phar / phar存根的一种正确方法。 它对我不起作用而对Mario有用的原因(请参阅问题下方的评论),是因为我安装了Suhosin,并且需要调整设置。 使用此处概述的技术修复:   要修复,请输入:      suhosin.executor.include.whitelist = \“ phar \”      在/etc/php5/cli/php.ini中     
        您也可以这样: bootstrap.php;
<?php
function go() {
    print phpversion() . PHP_EOL;
    print \'i am some script\' . PHP_EOL;
}
然后:   php -r \“要求   \'phar://Myproject.phar \';走();\” 或没有功能,它将执行您在其中具有的任何命令,但是通常您在phar中将具有一些功能或类文件。     

要回复问题请先登录注册