簡體   English   中英

PHP PHAR:再次以正確的方式創建 .phar

[英]PHP PHAR: Once again about creation of .phar in a proper way

我正在嘗試使用可執行存根創建一個 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 資源?

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

刪除它,錯誤就會消失。

要設置shebang,請使用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM