CakeFest 2024: The Official CakePHP Conference

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 = null, ?int $compression = null, ?string $extension = null): ?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 и null в случае возникновения ошибки.

Ошибки

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

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

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

add a note

User Contributed Notes 1 note

up
-8
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