PharData::convertToExecutable

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

PharData::convertToExecutableКонвертация tar/zip-архива с данными в запускаемый phar-архив

Описание

public PharData::convertToExecutable(int $format = ?, int $compression = ?, string $extension = ?): Phar

Замечание:

Для корректной работы с объектами Phar этому методу необходима установка значения php.ini phar.readonly в 0. В противном случае, будет выброшено исключение 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 (bzip сжатие).

extension

Этот параметр используется для явного задания расширения для нового архива. Обратите внимание, что для того, чтобы обрабатываться как phar-архив, файлы должны в своём расширении иметь .phar.

При конвертации в phar-архива, расширение по умолчанию .phar, .phar.gz или .phar.bz2, в зависимости от заданного типа сжатия. Для tar-архивов, расширение по умолчанию .phar.tar, .phar.tar.gz, и .phar.tar.bz2. Для zip-архивов расширение по умолчанию .phar.zip.

Возвращаемые значения

Этот метод возвращает объект Phar, либо выбрасывает исключение.

Ошибки

Метод выбрасывает исключение BadMethodCallException если не может произвести сжатие, либо если задан неизвестный алгоритм сжатия, для архива включена буферизация с помощью Phar::startBuffering(), а метод Phar::stopBuffering() не вызывался. Выбрасывается исключение UnexpectedValueException, если запись запрещена. И выбрасывается 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) {
    
// обработка ошибок
}
?>

Смотрите также

  • Phar::convertToExecutable() - Конвертирует phar-архив в другой исполняемый формат файла
  • Phar::convertToData() - Конвертирует phar-архив в неисполняемый tar- или zip-файл
  • PharData::convertToData() - Конвертация phar-архива в незапускаемый tar/zip-архив

add a note add a note

User Contributed Notes 1 note

up
-6
zoddo.ino[at]gmaildotcom
9 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