PHP Conference Japan 2024

PharData::convertToExecutable

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)

PharData::convertToExecutable將非可執行的 tar/zip 封存檔轉換為可執行的 phar 封存檔

說明

公開 PharData::convertToExecutable(?int $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::PHARPhar::TARPhar::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 物件;失敗時,返回 null

錯誤/例外

當無法壓縮、指定了未知的壓縮方法、請求的封存檔正在使用 Phar::startBuffering() 進行緩衝但尚未使用 Phar::stopBuffering() 結束時,此方法會拋出 BadMethodCallException 例外;如果停用了寫入支援,則會拋出 UnexpectedValueException 例外;如果在 phar 建立過程中遇到任何問題,則會拋出 PharException 例外。

更新日誌

版本 說明
8.0.0 formatcompressionlocalName 現在可以為 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) {
// 在此處理錯誤
}
?>

另請參閱

新增註記

使用者提供的註記

此頁面沒有使用者提供的註記。
To Top