Phar::convertToExecutable
(PHP >= 5.3.0, PECL phar >= 2.0.0)
Phar::convertToExecutable — Convert a phar archive to another executable phar archive file format
Description
$format
= 9021976
[, int $compression
= 9021976
[, string $extension
]]] )Note:
This method requires the php.ini setting phar.readonly to be set to 0 in order to work for Phar objects. Otherwise, a PharException will be thrown.
This method is used to convert a phar archive to another file format. For instance, it can be used to create a tar-based executable phar archive from a zip-based executable phar archive, or from an executable phar archive in the phar file format. In addition, it can be used to apply whole-archive compression to a tar or phar-based archive.
If no changes are specified, this method throws a BadMethodCallException.
If successful, the method creates a new archive on disk and returns a Phar object. The old archive is not removed from disk, and should be done manually after the process has finished.
Parameters
-
format
-
This should be one of Phar::PHAR, Phar::TAR, or Phar::ZIP. If set to
NULL
, the existing file format will be preserved. -
compression
-
This should be one of Phar::NONE for no whole-archive compression, Phar::GZ for zlib-based compression, and Phar::BZ2 for bzip-based compression.
-
extension
-
This parameter is used to override the default file extension for a converted archive. Note that all zip- and tar-based phar archives must contain .phar in their file extension in order to be processed as a phar archive.
If converting to a phar-based archive, the default extensions are .phar, .phar.gz, or .phar.bz2 depending on the specified compression. For tar-based phar archives, the default extensions are .phar.tar, .phar.tar.gz, and .phar.tar.bz2. For zip-based phar archives, the default extension is .phar.zip.
Return Values
The method returns a Phar object on success and throws an exception on failure.
Errors/Exceptions
This method throws BadMethodCallException when unable to compress, an unknown compression method has been specified, the requested archive is buffering with Phar::startBuffering() and has not concluded with Phar::stopBuffering(), an UnexpectedValueException if write support is disabled, and a PharException if any problems are encountered during the phar creation process.
Examples
Example #1 A Phar::convertToExecutable() example
Using Phar::convertToExecutable():
<?php
try {
$tarphar = new Phar('myphar.phar.tar');
// convert it to the phar file format
// note that myphar.phar.tar is *not* unlinked
$phar = $tarphar->convertToExecutable(Phar::PHAR); // creates myphar.phar
$phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
// creates myphar.phar.tgz
$compressed = $phar->convertToExecutable(Phar::TAR, Phar::GZ, '.phar.tgz');
} catch (Exception $e) {
// handle the error here
}
?>
See Also
- Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file
- PharData::convertToExecutable() - Convert a non-executable tar/zip archive to an executable phar archive
- PharData::convertToData() - Convert a phar archive to a non-executable tar or zip file
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для сжатия и архивации
- Phar
- Функция Phar::addEmptyDir() - Add an empty directory to the phar archive
- Функция Phar::addFile() - Add a file from the filesystem to the phar archive
- Функция Phar::addFromString() - Add a file from the filesystem to the phar archive
- Функция Phar::apiVersion() - Returns the api version
- Функция Phar::buildFromDirectory() - Construct a phar archive from the files within a directory.
- Функция Phar::buildFromIterator() - Construct a phar archive from an iterator.
- Функция Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
- Функция Phar::canWrite() - Returns whether phar extension supports writing and creating phars
- Функция Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
- Функция Phar::compressAllFilesBZIP2() - Compresses all files in the current Phar archive using Bzip2 compression
- Функция Phar::compressAllFilesGZ() - Compresses all files in the current Phar archive using Gzip compression
- Функция Phar::compressFiles() - Compresses all files in the current Phar archive
- Функция Phar::__construct() - Construct a Phar archive object
- Функция Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file
- Функция Phar::convertToExecutable() - Convert a phar archive to another executable phar archive file format
- Функция Phar::copy() - Copy a file internal to the phar archive to another new file within the phar
- Функция Phar::count() - Returns the number of entries (files) in the Phar archive
- Функция Phar::createDefaultStub() - Create a phar-file format specific stub
- Функция Phar::decompress() - Decompresses the entire Phar archive
- Функция Phar::decompressFiles() - Decompresses all files in the current Phar archive
- Функция Phar::delMetadata() - Deletes the global metadata of the phar
- Функция Phar::delete() - Delete a file within a phar archive
- Функция Phar::extractTo() - Extract the contents of a phar archive to a directory
- Функция Phar::getMetadata() - Returns phar archive meta-data
- Функция Phar::getModified() - Return whether phar was modified
- Функция Phar::getSignature() - Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive
- Функция Phar::getStub() - Return the PHP loader or bootstrap stub of a Phar archive
- Функция Phar::getSupportedCompression() - Return array of supported compression algorithms
- Функция Phar::getSupportedSignatures() - Return array of supported signature types
- Функция Phar::getVersion() - Return version info of Phar archive
- Функция Phar::hasMetadata() - Returns whether phar has global meta-data
- Функция Phar::interceptFileFuncs() - instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions
- Функция Phar::isBuffering() - Used to determine whether Phar write operations are being buffered, or are flushing directly to disk
- Функция Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
- Функция Phar::isFileFormat() - Returns true if the phar archive is based on the tar/phar/zip file format depending on the parameter
- Функция Phar::isValidPharFilename() - Returns whether the given filename is a valid phar filename
- Функция Phar::isWritable() - Returns true if the phar archive can be modified
- Функция Phar::loadPhar() - Loads any phar archive with an alias
- Функция Phar::mapPhar() - Reads the currently executed file (a phar) and registers its manifest
- Функция Phar::mount() - Mount an external path or file to a virtual location within the phar archive
- Функция Phar::mungServer() - Defines a list of up to 4 $_SERVER variables that should be modified for execution
- Функция Phar::offsetExists() - determines whether a file exists in the phar
- Функция Phar::offsetGet() - Gets a PharFileInfo object for a specific file
- Функция Phar::offsetSet() - set the contents of an internal file to those of an external file
- Функция Phar::offsetUnset() - remove a file from a phar
- Функция Phar::running() - Returns the full path on disk or full phar URL to the currently executing Phar archive
- Функция Phar::setAlias() - Set the alias for the Phar archive
- Функция Phar::setDefaultStub() - Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader
- Функция Phar::setMetadata() - Sets phar archive meta-data
- Функция Phar::setSignatureAlgorithm() - set the signature algorithm for a phar and apply it.
- Функция Phar::setStub() - Used to set the PHP loader or bootstrap stub of a Phar archive
- Функция Phar::startBuffering() - Start buffering Phar write operations, do not modify the Phar object on disk
- Функция Phar::stopBuffering() - Stop buffering write requests to the Phar archive, and save changes to disk
- Функция Phar::uncompressAllFiles() - Uncompresses all files in the current Phar archive
- Функция Phar::unlinkArchive() - Completely remove a phar archive from disk and from memory
- Функция Phar::webPhar() - mapPhar for web-based phars. front controller for web applications
Коментарии
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.