diff options
author | Greg Beaver <cellog@php.net> | 2009-04-30 04:40:31 +0000 |
---|---|---|
committer | Greg Beaver <cellog@php.net> | 2009-04-30 04:40:31 +0000 |
commit | db7dc95d15d2c82e3f06d6d2e28c806089047ab2 (patch) | |
tree | a1e739f4bfd61717dcba4a215297bc0446e93fc0 /ext/phar/phar.c | |
parent | 292b1a02102aafaf93dd34bfd435378f705b65ee (diff) | |
download | php-git-db7dc95d15d2c82e3f06d6d2e28c806089047ab2.tar.gz |
MFPECL: fixed PECL Bug #14646: phar error message unclear with php stream wrappers
Diffstat (limited to 'ext/phar/phar.c')
-rw-r--r-- | ext/phar/phar.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/ext/phar/phar.c b/ext/phar/phar.c index b2f6a82ade..4173cf0aab 100644 --- a/ext/phar/phar.c +++ b/ext/phar/phar.c @@ -1262,7 +1262,11 @@ int phar_open_or_create_filename(char *fname, int fname_len, char *alias, int al /* next try to create a new file */ if (FAILURE == phar_detect_phar_fname_ext(fname, fname_len, &ext_str, &ext_len, !is_data, 1, 1 TSRMLS_CC)) { if (error) { - spprintf(error, 0, "Cannot create phar '%s', file extension (or combination) not recognised", fname); + if (ext_len == -2) { + spprintf(error, 0, "Cannot create a phar archive from a URL like \"%s\". Phar objects can only be created from local files", fname); + } else { + spprintf(error, 0, "Cannot create phar '%s', file extension (or combination) not recognised", fname); + } } return FAILURE; } @@ -1903,6 +1907,12 @@ int phar_detect_phar_fname_ext(const char *filename, int filename_len, const cha pos = memchr(filename, '/', filename_len); if (pos && pos != filename) { + /* check for url like http:// or phar:// */ + if (*(pos - 1) == ':' && (pos - filename) < filename_len - 1 && *(pos + 1) == '/') { + *ext_len = -2; + *ext_str = NULL; + return FAILURE; + } if (zend_hash_exists(&(PHAR_GLOBALS->phar_alias_map), (char *) filename, pos - filename)) { *ext_str = pos; *ext_len = -1; |