1Version 1.0.0 2 3 X make permissions in the lowest bits of flags to simplify using them [Greg] 4 X implement ini handler for phar.readonly and phar.require_hash that allows 5 enabling it on PHP_INI_ALL if it is disabled in the system, but does not 6 allow disabling it if it is enabled in the system [Greg] 7 X implement reading in metadata in manifest as <len32><metadata...> [Marcus] 8 X implement writing out of metadata to new manifest [Marcus] 9 X if SPL is disabled, enable only static methods of class Phar and disable 10 class PharFileInfo completely [Marcus] 11 X implement in-phar locking, so that a file that is opened for reading can't 12 have a handle opened for writing [Marcus/Greg] 13 X docs on file format/manifest description [Greg] 14 X docs on uses [Greg] 15 X stream context for specifying compression of a file [Marcus] 16 X stream context for specifying meta-data [Greg] 17 X Phar->begin()/Phar->commit() for specifying a new stub to the phar, 18 and deferring flush until all modifications are complete [Greg] 19 X Phar->getStub() for retrieving the stub of the phar [Marcus] 20 X add setUncompressed(), setCompressedGZ() and setCompressedBZ2() to 21 PharFileInfo class [Greg] 22 X add uncompressAllFiles(), compressAllFilesGZ() and compressAllFilesBZ2() 23 to Phar class [Greg] 24 X add PharFileInfo::setMetaData($metadata) [Marcus] 25 X add PharFileInfo::getMetaData() [Marcus] 26 X always throw exceptions from the Phar object, and E_RECOVERABLE_ERROR from 27 streams interface [Greg] 28 X Phar archive metadata Phar::setMetaData($metadata) Phar::getMetaData() 29 [Greg] 30 X support rename() in stream wrapper [Greg] 31 X update docs to reflect changes in error handling [Greg] 32 X fix 011.phpt, 029.phpt for uncaught exceptions causing bad cleanup 33 [Marcus/Greg] 34 35Version 1.1.0 36 37 X Ability to connect a phar file 'phar://whatever' to a directory. That way 38 all access to that phar archive are directed to the extracted directory. 39 This allows to have the installed files and the archive keep the same 40 includes. [Marcus] 41 X add SHA-2 (256, 512) support [Marcus] 42 X setSignatureAlgorithm() and Phar::MD5 Phar::SHA1 Phar::SHA256 Phar::SHA512 43 Phar::PGP to choose the kind of signature to use (PGP falls back to SHA1) 44 [Greg] 45 46Version 1.2.0 47 48 X add PharFileInfo::hasMetadata(), PharFileInfo::delMetadata() [Marcus] 49 X add Phar::hasMetadata(), Phar::delMetadata() [Marcus] 50 X fix Phar::CanWrite() [Marcus] 51 X add preliminary phar command (phar.php) [Marcus] 52 X add phar command (phar.phar) [Marcus] 53 X list all available compression methods using 54 Phar::getSupportedCompression() [Marcus] 55 X Remove RINIT [Marcus] 56 57Version 1.2.1 58 59 X Add Phar::getAlias() [Marcus] 60 X Add Phar::setAlias() [Greg] 61 X Make -a optional in pack subcommand of phar.phar [Marcus] 62 X Make Phar::loadPhar() and Phar::mapPhar() ignore extracted archives 63 64Version 2.0.0 65 66 X implement webPhar() rewrite as a callback that returns FALSE to deny 67 access, or a string representing a file within the archive to access. If 68 unknown, the callback should return the original request uri [Greg] 69 X rework filename detection so that alias is always checked first [Greg] 70 X make aliases containing '/' or '\' invalid [Greg] 71 X implement manual mounting of external phar archives to locations inside a 72 phar path, $phar->mount('/path/to/external.phar', 'internal/path'); 73 this would traverse external.phar's manifest, and add each entry as a 74 virtual entry just like automatic mounting of internal phars [Greg] 75 X implement manual mounting of external paths to a directory inside a phar 76 path. Because the mapping would be to an external directory, write access 77 would be allowed always. This allows storing sqlite databases, cache, or 78 template files in a location external to the phar. Copy of the files 79 would need to be performed in an installation step, phar would not attempt 80 to do this for performance and security reasons. [Greg] 81 X implement opendir support for mounted paths [Greg] 82 X make convertToZip/convertToTar rename files [Steph] 83 X make convertTo*() with full file compression rename to append .gz or .bz2 84 [Steph] 85 X don't automatically add a stub to .zip or .tar files [Steph] 86 X don't allow a stub or alias to be added to a .zip/.tar that does not have 87 ".phar" in the filename (or already have stub/alias) [Steph] 88 X allow read/write on .tar/.zip files that do not contain a stub or alias [Steph/Greg] 89 X prevent manual addition of stub via $a['.phar/stub.php'] = '<?php my stub'; [Greg] 90 X investigate potential collision between SPL's DirectoryIterator flags and 91 those in phar_archive_data [Steph] 92 X compression should work for non-phar archives [Steph] 93 X implement initial support for simple zip/tar archives (PharData) [Steph] 94 X make createDefaultStub() setDefaultStub() and have it file format-specific 95 [Steph] 96 X convertTo*() should always use the default stub [Steph] 97 X ability to store empty directories [Greg] 98 X tar support [Greg] 99 X zip support [Greg] 100 X Phar::copy($from, $to); [Greg] 101 X Phar::delete($what) [Greg] 102 X Phar::buildFromIterator(Iterator $it[, string $base_directory]) [Greg] 103 X Layout: Option to compress all content rather than single files. (tar/phar 104 only) [Greg] 105 X clean crap paths like phar://blah.phar/file//../to\\here.php [Greg] 106 107Version 2.1.0 108 * implement write support for mounted files even if phar.readonly=1 109 * implement automatic "mounting" of internal phar archives so that 110 phar:///path/to/archive.phar/internal.phar/file opens internal.phar and 111 maps its manifest inside archive.phar. The manifest entry inside 112 archive.phar would be named "internal.phar/file". Write access to internal 113 files inside an internal phar would be denied, as the entire archive must 114 be added or removed at the same time. 115