PHP 8.3.4 Released!

Phar::convertToExecutable

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

Phar::convertToExecutableКонвертирует phar-архив в другой исполняемый формат файла

Описание

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

Замечание:

Для корректной работы с объектами Phar этому методу необходима установка значения php.ini phar.readonly в 0. В противном случае, будет выброшено исключение PharException.

Этот метод используется для конвертирования phar-архива в другой формат файла. Например, он может быть использован для создания исполняемого phar-архива, основанного на tar, из исполняемого phar-архива, основанного на zip, или из исполняемого phar-архива с форматом файла phar. Кроме того, данный метод может быть использован для сжатия целого архива, основанного на tar или phar.

Если не были указаны никакие изменения, то данный метод выбросит исключение BadMethodCallException.

В случае успешного выполнения данный метод создаёт на диске новый архив и возвращает объект Phar. Старый архив не удаляется с диска, это должно быть сделано вручную после завершения процесса.

Список параметров

format

Значением этого параметра должна быть одна из констант: Phar::PHAR, Phar::TAR или Phar::ZIP. Если значение установлено в null, то существующий формат файла будет сохранён.

compression

Значением этого параметра должна быть одна из констант: Phar::NONE для отсутствия сжатия всего архива, Phar::GZ для сжатия, основанного на zlib, или Phar::BZ2 для bzip-сжатия.

extension

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

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

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

Данный метод возвращает объект Phar в успешного выполнения и null в случае возникновения ошибки.

Ошибки

Данный метод выбрасывает исключение BadMethodCallException в следующих случаях: при невозможности сжатия; если был передан неизвестный алгоритм сжатия; в запрошенном архиве была включена буферизация с помощью Phar::startBuffering() и не была завершена с помощью Phar::stopBuffering(). Если поддержка записи отключена, то будет брошено исключение UnexpectedValueException. В случае возникновения каких-либо проблем в процессе создания phar выбрасывается исключение PharException.

Список изменений

Версия Описание
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) {
// обработка ошибок
}
?>

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

add a note

User Contributed Notes 1 note

up
0
alex at phpguide dot co dot il
12 years ago
Convert to executable and compress methods override any stub you have created with their own stub which is responsible for extracting/executing self's content.

calling setStub() after convertingToExecutable doesn't help either. As far of php 5.3.6 (phar 2.0.1 ) if you want to have a phar archive accessible threw the web, you'll have to create your own
index.php which will include a nonexecutable phar and act as the bootstrap.
To Top