轉換為可執行檔和壓縮方法會覆寫您建立的任何存根,並使用它們自己的存根,該存根負責提取/執行自身內容。
在 convertToExecutable 之後呼叫 setStub() 也沒有幫助。就 php 5.3.6 (phar 2.0.1) 而言,如果您想讓 phar 封存檔可透過網路存取,您必須建立自己的
index.php,它將包含一個不可執行的 phar 並作為啟動程式。
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 2.0.0)
Phar::convertToExecutable — 將 phar 封存轉換為其他可執行的 phar 封存檔案格式
$format
= null
, ?int $compression
= null
, ?string $extension
= null
): ?Phar注意事項:
此方法需要將 php.ini 設定中的
phar.readonly
設為0
才能作用於 Phar 物件。否則,將會拋出 PharException 例外。
此方法用於將 phar 封存檔轉換為其他檔案格式。例如,它可以用於從基於 zip 的可執行 phar 封存檔,或從 phar 檔案格式的可執行 phar 封存檔建立基於 tar 的可執行 phar 封存檔。此外,它還可以用於對 tar 或 phar 格式的封存檔應用全封存壓縮。
如果沒有指定任何變更,此方法會拋出 BadMethodCallException 例外。
如果成功,此方法會在磁碟上建立一個新的封存檔,並返回一個 Phar 物件。舊的封存檔不會從磁碟中移除,應該在程序完成後手動移除。
format
這應該是 Phar::PHAR
、Phar::TAR
或 Phar::ZIP
之一。如果設為 null
,則會保留現有的檔案格式。
compression
這應該是 Phar::NONE
表示不進行全封存壓縮,Phar::GZ
表示基於 zlib 的壓縮,以及 Phar::BZ2
表示基於 bzip 的壓縮。
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() 結束、寫入支援被停用時會拋出 UnexpectedValueException 異常,以及在 phar 建立過程中遇到任何問題時會拋出 PharException 異常,而無法壓縮時則拋出 BadMethodCallException 異常。
版本 | 說明 |
---|---|
8.0.0 |
format 、compression 和 extension 現在可以為 null。 |
範例 #1 Phar::convertToExecutable() 範例
使用 Phar::convertToExecutable()
<?php
try {
$tarphar = new Phar('myphar.phar.tar');
// 將其轉換為 phar 檔案格式
// 注意 myphar.phar.tar *不會* 被取消連結
$phar = $tarphar->convertToExecutable(Phar::PHAR); // 建立 myphar.phar
$phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
// 建立 myphar.phar.tgz
$compressed = $phar->convertToExecutable(Phar::TAR, Phar::GZ, '.phar.tgz');
} catch (Exception $e) {
// 在此處處理錯誤
}
?>
轉換為可執行檔和壓縮方法會覆寫您建立的任何存根,並使用它們自己的存根,該存根負責提取/執行自身內容。
在 convertToExecutable 之後呼叫 setStub() 也沒有幫助。就 php 5.3.6 (phar 2.0.1) 而言,如果您想讓 phar 封存檔可透過網路存取,您必須建立自己的
index.php,它將包含一個不可執行的 phar 並作為啟動程式。