xref: /PHP-7.2/ext/phar/TODO (revision 16b4d8e0)
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