PHP 7.2.25 Released

PharData::convertToExecutable

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

PharData::convertToExecutable実行可能でない tar/zip アーカイブを実行可能な phar アーカイブ形式に変換する

説明

PharData::convertToExecutable ([ int $format [, int $compression [, string $extension ]]] ) : Phar

注意:

このメソッドは、php.iniphar.readonly0 でないと Phar オブジェクトで動作しません。それ以外の場合は PharException がスローされます。

このメソッドは、実行可能でない tar あるいは zip アーカイブを実行可能な phar 形式に変換します。実行可能なファイル形式 3 種類 (phar, tar あるいは zip) のどれでも使用することができ、アーカイブ全体の圧縮も行うことができます。

何も変更しなかった場合、このメソッドは BadMethodCallException をスローします。

成功した場合は、このメソッドはディスク上に新しいアーカイブを作成して Phar オブジェクトを返します。 古いアーカイブは削除されずディスク上に残るので、 処理を終えたら手動で削除する必要があります。

パラメータ

format

これは Phar::PHARPhar::TAR あるいは Phar::ZIP のいずれかとなります。 NULL を指定すると、現在のファイル形式をそのまま保持します。

compression

アーカイブ全体の圧縮を行わない場合は Phar::NONE、 zlib による圧縮の場合は Phar::GZ、そして bzip による圧縮の場合は Phar::BZ2 のいずれかを指定します。

extension

このパラメータは、変換後のアーカイブのデフォルトのファイル拡張子を変更します。 実行可能でない tar や zip アーカイブのファイル名としては .phar は使用できないことに注意しましょう。

phar 形式のアーカイブに変換する場合、デフォルトの拡張子は圧縮形式によって .phar.phar.gz あるいは .phar.bz2 のいずれかとなります。tar 形式のアーカイブの場合、デフォルトの拡張子は .phar.tar.phar.tar.gz および .phar.tar.bz2 です。zip 形式のアーカイブの場合、 デフォルトの拡張子は .phar.zip となります。

返り値

このメソッドは、成功した場合に Phar オブジェクトを返します。失敗した場合は例外をスローします。

エラー / 例外

圧縮ができない場合や無効な圧縮方式が指定された場合、あるいは Phar::startBuffering() でバッファリングしたまま Phar::stopBuffering() を実行していないアーカイブを処理しようとした場合に BadMethodCallException をスローします。 また、書き込みサポートが無効な場合に UnexpectedValueException、 phar 作成中に何らかの問題が発生した場合に PharException をスローします。

例1 PharData::convertToExecutable() の例

PharData::convertToExecutable() の使用例です。

<?php
try {
    
$tarphar = new PharData('myphar.tar');
    
// phar ファイル形式に変換します
    // myphar.tar は削除 *されない* ことに注意しましょう
    
$phar $tarphar->convertToExecutable(Phar::PHAR); // creates myphar.phar
    
$phar->setStub($phar->createDefaultStub('cli.php''web/index.php'));
    
// myphar.phar.tgz を作成します
    
$compressed $tarphar->convertToExecutable(Phar::TARPhar::GZ'.phar.tgz');
} catch (
Exception $e) {
    
// ここでエラー処理をします
}
?>

参考

add a note add a note

User Contributed Notes 1 note

up
-6
zoddo.ino[at]gmaildotcom
5 years ago
It doesn't work

Fatal error: Uncaught exception 'UnexpectedValueException' with message 'Cannot convert phar archive "C:/xxxxxxxxxxx.zip", unable to open entry "sub-directory/" contents: phar error: internal corruption of zip-based phar "C:/xxxxxxxxxxx.zip" (local header of file sub-directory/" does not match central directory)' in C:\xxxxxxxxxxx.php on line 5
To Top