[英]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.