【问题标题】:PHP PHAR: Once again about creation of .phar in a proper wayPHP PHAR:再次以正确的方式创建 .phar
【发布时间】:2014-12-27 02:31:28
【问题描述】:

我正在尝试使用可执行存根创建 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 资源?

【问题讨论】:

    标签: php phar


    【解决方案1】:

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

    删除它,错误就会消失。

    【讨论】:

      【解决方案2】:

      要设置shebang,请使用:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-04-05
        • 1970-01-01
        • 1970-01-01
        • 2014-04-21
        • 2019-03-12
        • 1970-01-01
        • 2013-08-21
        相关资源
        最近更新 更多