update). (Matteo)
- Fixed bug #42362 (HTTP status codes 204 and 304 should not be gzipped).
(Scott, Edward Z. Yang)
+- Fixed PECL bug #16338 (phar extension uses php_stream_copy_to_stream). (Greg)
+- Fixed PECL bug #14646 (phar error message unclear with php stream wrappers). (Greg)
- Fixed an issue with ReflectionProperty::setAccessible().
(Sebastian, Roman Borschel)
/* 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;
}
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;
--- /dev/null
+--TEST--
+Phar object passed URL
+--INI--
+default_charset=UTF-8
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--FILE--
+<?php
+try {
+ $a = new Phar('http://should.fail.com');
+} catch (UnexpectedValueException $e) {
+ echo $e->getMessage(),"\n";
+}
+try {
+ $a = new Phar('http://');
+} catch (UnexpectedValueException $e) {
+ echo $e->getMessage(),"\n";
+}
+try {
+ $a = new Phar('http:/');
+} catch (UnexpectedValueException $e) {
+ echo $e->getMessage(),"\n";
+}
+?>
+===DONE===
+--EXPECT--
+Cannot create a phar archive from a URL like "http://should.fail.com". Phar objects can only be created from local files
+Cannot create a phar archive from a URL like "http://". Phar objects can only be created from local files
+Cannot create phar 'http:/', file extension (or combination) not recognised
+===DONE===
\ No newline at end of file