32#define PHP_PHAR_API_VERSION "1.1.1"
34#define PHAR_API_VERSION 0x1110
36#define PHAR_API_VERSION_NODIR 0x1100
37#define PHAR_API_MIN_DIR 0x1110
38#define PHAR_API_MIN_READ 0x1000
39#define PHAR_API_MAJORVERSION 0x1000
40#define PHAR_API_MAJORVER_MASK 0xF000
41#define PHAR_API_VER_MASK 0xFFF0
43#define PHAR_HDR_COMPRESSION_MASK 0x0000F000
44#define PHAR_HDR_COMPRESSED_NONE 0x00000000
45#define PHAR_HDR_COMPRESSED_GZ 0x00001000
46#define PHAR_HDR_COMPRESSED_BZ2 0x00002000
47#define PHAR_HDR_SIGNATURE 0x00010000
50#define PHAR_FILE_COMPRESSION_MASK 0x00F00000
51#define PHAR_FILE_COMPRESSED_NONE 0x00000000
52#define PHAR_FILE_COMPRESSED_GZ 0x00100000
53#define PHAR_FILE_COMPRESSED_BZ2 0x00200000
55#define PHAR_SIG_MD5 0x0001
56#define PHAR_SIG_SHA1 0x0002
57#define PHAR_SIG_SHA256 0x0003
58#define PHAR_SIG_SHA512 0x0004
59#define PHAR_SIG_OPENSSL 0x0010
60#define PHAR_SIG_OPENSSL_SHA256 0x0011
61#define PHAR_SIG_OPENSSL_SHA512 0x0012
65#define PHAR_ENT_COMPRESSION_MASK 0x0000F000
66#define PHAR_ENT_COMPRESSED_NONE 0x00000000
67#define PHAR_ENT_COMPRESSED_GZ 0x00001000
68#define PHAR_ENT_COMPRESSED_BZ2 0x00002000
70#define PHAR_ENT_PERM_MASK 0x000001FF
71#define PHAR_ENT_PERM_MASK_USR 0x000001C0
72#define PHAR_ENT_PERM_SHIFT_USR 6
73#define PHAR_ENT_PERM_MASK_GRP 0x00000038
74#define PHAR_ENT_PERM_SHIFT_GRP 3
75#define PHAR_ENT_PERM_MASK_OTH 0x00000007
76#define PHAR_ENT_PERM_DEF_FILE 0x000001B6
77#define PHAR_ENT_PERM_DEF_DIR 0x000001FF
79#define PHAR_FORMAT_SAME 0
80#define PHAR_FORMAT_PHAR 1
81#define PHAR_FORMAT_TAR 2
82#define PHAR_FORMAT_ZIP 3
86#define TAR_SYMLINK '2'
89#define TAR_GLOBAL_HDR 'g'
90#define TAR_FILE_HDR 'x'
92#define PHAR_MUNG_PHP_SELF (1<<0)
93#define PHAR_MUNG_REQUEST_URI (1<<1)
94#define PHAR_MUNG_SCRIPT_NAME (1<<2)
95#define PHAR_MUNG_SCRIPT_FILENAME (1<<3)
160#define PHAR_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(phar, v)
162#if defined(ZTS) && defined(COMPILE_DL_PHAR)
326#define PHAR_MIME_PHP '\0'
327#define PHAR_MIME_PHPS '\1'
328#define PHAR_MIME_OTHER '\2'
363static inline void phar_unixify_path_separators(
char *path,
size_t path_len)
368 for (
s = path; (size_t)(
s - path) < path_len; ++
s) {
376static inline bool phar_validate_alias(
const char *alias,
size_t alias_len)
378 return !(memchr(alias,
'/', alias_len) || memchr(alias,
'\\', alias_len) || memchr(alias,
':', alias_len) ||
379 memchr(alias,
';', alias_len) || memchr(alias,
'\n', alias_len) || memchr(alias,
'\r', alias_len));
file(string $filename, int $flags=0, $context=null)
dir(string $directory, $context=null)
zend_ffi_ctype_name_buf buf
void phar_add_virtual_dirs(phar_archive_data *phar, char *filename, size_t filename_len)
int phar_parse_zipfile(php_stream *fp, char *fname, size_t fname_len, char *alias, size_t alias_len, phar_archive_data **pphar, char **error)
void phar_flush(phar_archive_data *archive, char **error)
void phar_flush_ex(phar_archive_data *archive, zend_string *user_stub, bool is_default_stub, char **error)
zend_result phar_detect_phar_fname_ext(const char *filename, size_t filename_len, const char **ext_str, size_t *ext_len, int executable, int for_create, int is_complete)
zif_handler orig_filectime
zif_handler orig_is_writable
char * phar_compress_filter(phar_entry_info *entry, int return_unknown)
phar_entry_info * phar_get_link_source(phar_entry_info *entry)
struct _phar_metadata_tracker phar_metadata_tracker
zend_result phar_metadata_tracker_unserialize_or_copy(phar_metadata_tracker *tracker, zval *value, bool persistent, HashTable *unserialize_options, const char *method_name)
phar_path_check_result phar_path_check(char **p, size_t *len, const char **error)
struct _phar_entry_fp phar_entry_fp
int phar_seek_efp(phar_entry_info *entry, zend_off_t offset, int whence, zend_off_t position, int follow_links)
bool phar_metadata_tracker_has_data(const phar_metadata_tracker *tracker, bool persistent)
void phar_metadata_tracker_free(phar_metadata_tracker *val, bool persistent)
char * phar_fix_filepath(char *path, size_t *new_len, int use_cwd)
phar_archive_data * last_phar
zif_handler orig_fileperms
zend_result phar_postprocess_file(phar_entry_data *idata, uint32_t crc32, char **error, int process_zip)
void phar_metadata_tracker_clone(phar_metadata_tracker *tracker)
bool phar_archive_delref(phar_archive_data *phar)
struct _phar_entry_fp_info phar_entry_fp_info
zend_result phar_parse_tarfile(php_stream *fp, char *fname, size_t fname_len, char *alias, size_t alias_len, phar_archive_data **pphar, uint32_t compression, char **error)
void phar_destroy_phar_data(phar_archive_data *phar)
zif_handler orig_filegroup
zif_handler orig_fileinode
zend_result phar_copy_entry_fp(phar_entry_info *source, phar_entry_info *dest, char **error)
phar_entry_data * phar_get_or_create_entry_data(char *fname, size_t fname_len, char *path, size_t path_len, const char *mode, char allow_dir, char **error, int security)
phar_entry_info * phar_get_entry_info_dir(phar_archive_data *phar, char *path, size_t path_len, char dir, char **error, int security)
int phar_SERVER_mung_list
uint32_t last_phar_name_len
php_stream * phar_get_efp(phar_entry_info *entry, int follow_links)
char * phar_decompress_filter(phar_entry_info *entry, int return_unknown)
zif_handler orig_filetype
HashTable phar_persist_map
zend_result phar_split_fname(const char *filename, size_t filename_len, char **arch, size_t *arch_len, char **entry, size_t *entry_len, int executable, int for_create)
struct _phar_archive_data phar_archive_data
zend_result phar_create_or_parse_filename(char *fname, size_t fname_len, char *alias, size_t alias_len, bool is_data, uint32_t options, phar_archive_data **pphar, char **error)
void phar_object_init(void)
void phar_metadata_tracker_copy(phar_metadata_tracker *dest, const phar_metadata_tracker *source, bool persistent)
zif_handler orig_file_get_contents
zend_result phar_open_or_create_filename(char *fname, size_t fname_len, char *alias, size_t alias_len, bool is_data, uint32_t options, phar_archive_data **pphar, char **error)
zend_result phar_create_signature(phar_archive_data *phar, php_stream *fp, char **signature, size_t *signature_length, char **error)
void phar_request_initialize(void)
void phar_metadata_tracker_try_ensure_has_serialized_data(phar_metadata_tracker *tracker, bool persistent)
uint32_t openssl_privatekey_len
zend_result phar_open_archive_fp(phar_archive_data *phar)
void phar_tar_flush(phar_archive_data *phar, zend_string *user_stub, bool is_default_stub, char **error)
phar_entry_info * phar_get_entry_info(phar_archive_data *phar, char *path, size_t path_len, char **error, int security)
zend_result phar_mount_entry(phar_archive_data *phar, char *filename, size_t filename_len, char *path, size_t path_len)
zend_result phar_free_alias(phar_archive_data *phar, char *alias, size_t alias_len)
zend_result phar_get_entry_data(phar_entry_data **ret, char *fname, size_t fname_len, char *path, size_t path_len, const char *mode, char allow_dir, char **error, int security)
zend_result phar_verify_signature(php_stream *fp, size_t end_of_phar, uint32_t sig_type, char *sig, size_t sig_len, char *fname, char **signature, size_t *signature_len, char **error)
zend_result phar_open_executed_filename(char *alias, size_t alias_len, char **error)
void phar_zip_flush(phar_archive_data *archive, zend_string *user_stub, bool is_default_stub, char **error)
struct _phar_entry_info phar_entry_info
zend_string * phar_find_in_include_path(zend_string *file, phar_archive_data **pphar)
zend_result phar_open_entry_fp(phar_entry_info *entry, char **error, int follow_links)
struct _phar_entry_data phar_entry_data
union _phar_archive_object phar_archive_object
void destroy_phar_manifest_entry(zval *zv)
zif_handler orig_readfile
phar_entry_fp * cached_fp
zif_handler orig_fileowner
struct _phar_mime_type phar_mime_type
union _phar_entry_object phar_entry_object
zend_string * phar_create_default_stub(const char *index_php, const char *web_index, char **error)
zif_handler orig_filesize
zif_handler orig_is_executable
zend_result phar_get_archive(phar_archive_data **archive, char *fname, size_t fname_len, char *alias, size_t alias_len, char **error)
zif_handler orig_filemtime
zend_result phar_open_or_create_tar(char *fname, size_t fname_len, char *alias, size_t alias_len, int is_data, uint32_t options, phar_archive_data **pphar, char **error)
zend_result phar_copy_on_write(phar_archive_data **pphar)
char * openssl_privatekey
void phar_parse_metadata_lazy(const char *buffer, phar_metadata_tracker *tracker, uint32_t zip_metadata_len, bool persistent)
int phar_open_or_create_zip(char *fname, size_t fname_len, char *alias, size_t alias_len, int is_data, uint32_t options, phar_archive_data **pphar, char **error)
phar_entry_info * phar_open_jit(phar_archive_data *phar, phar_entry_info *entry, char **error)
zif_handler orig_fileatime
void phar_entry_delref(phar_entry_data *idata)
bool phar_is_tar(char *buf, char *fname)
zend_result phar_open_from_filename(char *fname, size_t fname_len, char *alias, size_t alias_len, uint32_t options, phar_archive_data **pphar, char **error)
PHP_JSON_API size_t int options
struct _php_stream php_stream
struct _php_stream_wrapper php_stream_wrapper
struct _spl_filesystem_object spl_filesystem_object
const php_stream_wrapper php_stream_phar_wrapper
phar_metadata_tracker metadata_tracker
uint32_t is_temporary_alias
phar_entry_info * internal_file
enum phar_fp_type fp_type
phar_entry_fp_info * manifest
uint32_t compressed_filesize
phar_metadata_tracker metadata_tracker
enum phar_fp_type fp_type
uint32_t uncompressed_filesize
spl_filesystem_object spl
phar_archive_data * archive
spl_filesystem_object spl
#define ZEND_TSRMLS_CACHE_EXTERN()
#define ZEND_END_MODULE_GLOBALS(module_name)
#define ZEND_EXTERN_MODULE_GLOBALS(module_name)
#define ZEND_BEGIN_MODULE_GLOBALS(module_name)
void(ZEND_FASTCALL * zif_handler)(INTERNAL_FUNCTION_PARAMETERS)
struct _zend_string zend_string
ZEND_API zend_ulong ZEND_FASTCALL zend_hash_func(const char *str, size_t len)
struct _zend_array HashTable
ZEND_RESULT_CODE zend_result