cellog Thu Apr 30 04:43:10 2009 UTC
Added files: (Branch: PHP_5_3)
/php-src/ext/phar/tests phar_construct_invalidurl.phpt
Modified files:
/php-src NEWS
/php-src/ext/phar phar.c
Log:
MFPECL fix PECL Bug #14646: phar error message unclear with php stream
wrappers (note: is there a standard way to list PECL bugs in NEWS?)
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.965.2.571&r2=1.2027.2.547.2.965.2.572&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.965.2.571
php-src/NEWS:1.2027.2.547.2.965.2.572
--- php-src/NEWS:1.2027.2.547.2.965.2.571 Tue Apr 28 07:13:30 2009
+++ php-src/NEWS Thu Apr 30 04:43:09 2009
@@ -53,6 +53,8 @@
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)
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar.c?r1=1.370.2.59&r2=1.370.2.60&diff_format=u
Index: php-src/ext/phar/phar.c
diff -u php-src/ext/phar/phar.c:1.370.2.59 php-src/ext/phar/phar.c:1.370.2.60
--- php-src/ext/phar/phar.c:1.370.2.59 Wed Apr 29 03:24:26 2009
+++ php-src/ext/phar/phar.c Thu Apr 30 04:43:10 2009
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: phar.c,v 1.370.2.59 2009/04/29 03:24:26 cellog Exp $ */
+/* $Id: phar.c,v 1.370.2.60 2009/04/30 04:43:10 cellog Exp $ */
#define PHAR_MAIN 1
#include "phar_internal.h"
@@ -1262,7 +1262,11 @@
/* 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 @@
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;
@@ -3624,7 +3634,7 @@
php_info_print_table_header(2, "Phar: PHP Archive support", "enabled");
php_info_print_table_row(2, "Phar EXT version", PHP_PHAR_VERSION);
php_info_print_table_row(2, "Phar API version", PHP_PHAR_API_VERSION);
- php_info_print_table_row(2, "CVS revision", "$Revision: 1.370.2.59 $");
+ php_info_print_table_row(2, "CVS revision", "$Revision: 1.370.2.60 $");
php_info_print_table_row(2, "Phar-based phar archives", "enabled");
php_info_print_table_row(2, "Tar-based phar archives", "enabled");
php_info_print_table_row(2, "ZIP-based phar archives", "enabled");
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/phar_construct_invalidurl.phpt?view=markup&rev=1.1
Index: php-src/ext/phar/tests/phar_construct_invalidurl.phpt
+++ php-src/ext/phar/tests/phar_construct_invalidurl.phpt
--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===
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php