PHP PHAR:再次以正确的方式创建.phar

时间:2014-10-30 21:09:34

标签: php phar

我正在尝试使用可执行存根创建一个PHAR存档。代码:

<?php
$phar = new Phar('test.phar');
$phar->buildFromDirectory('files/');
$phar->setStub($phar->createDefaultStub(file_get_contents('st.php'), 'install.php'));
?>

“st.php”(默认存根)的内容:

#!/usr/bin/php
<?php Phar::mapPhar(); include("phar://test.phar/install.php"); __HALT_COMPILER();

“文件”里面只有一个文件 - “install.php”

<?php
echo "The Installer is running right now.";
?>

PHAR编译过程运行时没有任何错误。但是当我尝试包含创建的PHAR存档

include_once('phar://test.phar');

发生错误:

PHP Parse error:  syntax error, unexpected ''#!/usr/bin/php\r' (T_ENCAPSED_AND_WHITESPACE) in D:/WebServer/domains/modinst/www/test.phar on line 110

问题是:如何创建一个PHAR存档以用作我可以简单“包含”的PHP资源?

2 个答案:

答案 0 :(得分:0)

您不能在存根文件中使用shebang行。这是当前PHP版本的限制。

删除它,错误将消失。

答案 1 :(得分:0)

要设置shebang,请使用:

$phar->setStub("#!/usr/bin/env php" . PHP_EOL 
    . $phar->createDefaultStub(file_get_contents('st.php')));