(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
PharData::convertToExecutable — 將非可執行的 tar/zip 封存檔轉換為可執行的 phar 封存檔
$format
= null
, ?int $compression
= null
, ?string $extension
= null
): ?Phar注意事項:
此方法需要將 php.ini 設定檔中的
phar.readonly
設定為0
才能作用於 Phar 物件。否則,將會拋出 PharException 例外。
此方法用於將不可執行的 tar 或 zip 封存檔轉換為可執行的 phar 封存檔。可以使用三種可執行檔案格式(phar、tar 或 zip)中的任何一種,並且還可以執行整個封存檔的壓縮。
如果未指定任何更改,此方法將拋出 BadMethodCallException 例外。
如果成功,該方法會在磁碟上建立一個新的封存檔,並返回一個 Phar 物件。舊的封存檔不會從磁碟中移除,應該在程序完成後手動移除。
format
此參數應為 Phar::PHAR
、Phar::TAR
或 Phar::ZIP
其中之一。如果設定為 null
,則會保留現有的檔案格式。
compression
此參數應為 Phar::NONE
(不進行整個封存檔壓縮)、Phar::GZ
(使用 zlib 壓縮)或 Phar::BZ2
(使用 bzip2 壓縮)其中之一。
extension
此參數用於覆寫轉換後封存檔的預設檔案副檔名。請注意,所有基於 zip 和 tar 的 phar 封存檔的檔案副檔名中都必須包含 .phar
才能作為 phar 封存檔處理。
如果轉換為基於 phar 的封存檔,則預設副檔名為 .phar
、.phar.gz
或 .phar.bz2
,具體取決於指定的壓縮方式。對於基於 tar 的 phar 封存檔,預設副檔名為 .phar.tar
、.phar.tar.gz
和 .phar.tar.bz2
。對於基於 zip 的 phar 封存檔,預設副檔名為 .phar.zip
。
當無法壓縮、指定了未知的壓縮方法、請求的封存檔正在使用 Phar::startBuffering() 進行緩衝但尚未使用 Phar::stopBuffering() 結束時,此方法會拋出 BadMethodCallException 例外;如果停用了寫入支援,則會拋出 UnexpectedValueException 例外;如果在 phar 建立過程中遇到任何問題,則會拋出 PharException 例外。
版本 | 說明 |
---|---|
8.0.0 |
format 、compression 和 localName 現在可以為 null。 |
範例 #1 PharData::convertToExecutable() 範例
使用 PharData::convertToExecutable()
<?php
try {
$tarphar = new PharData('myphar.tar');
// 將其轉換為 phar 檔案格式
// 注意 myphar.tar *不會* 被取消連結
$phar = $tarphar->convertToExecutable(Phar::PHAR); // 建立 myphar.phar
$phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
// 建立 myphar.phar.tgz
$compressed = $tarphar->convertToExecutable(Phar::TAR, Phar::GZ, '.phar.tgz');
} catch (Exception $e) {
// 在此處理錯誤
}
?>