dmitry Tue Jul 22 07:03:01 2008 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/phar phar.c phar_internal.h phar_object.c /php-src/ext/phar/tests frontcontroller11.phpt /php-src/ext/phar/tests/cache_list frontcontroller11.phpt /php-src/ext/phar/tests/cache_list/files frontcontroller6.phar frontcontroller7.phar /php-src/ext/phar/tests/files frontcontroller5.phar frontcontroller6.phar frontcontroller6.phar.inc frontcontroller7.phar frontcontroller7.phar.inc /php-src/ext/phar/tests/tar frontcontroller11.phar.phpt /php-src/ext/phar/tests/tar/files frontcontroller6.phar.inc frontcontroller6.phar.tar frontcontroller7.phar.inc frontcontroller7.phar.tar /php-src/ext/phar/tests/zip frontcontroller11.phar.phpt /php-src/ext/phar/tests/zip/files frontcontroller6.phar.inc frontcontroller6.phar.zip frontcontroller7.phar.inc frontcontroller7.phar.zip Log: Improved webPhar speed (frontcontroller11.phar.phpt is disabled, should be removed)
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar.c?r1=1.370.2.35&r2=1.370.2.36&diff_format=u Index: php-src/ext/phar/phar.c diff -u php-src/ext/phar/phar.c:1.370.2.35 php-src/ext/phar/phar.c:1.370.2.36 --- php-src/ext/phar/phar.c:1.370.2.35 Sun Jul 20 14:42:34 2008 +++ php-src/ext/phar/phar.c Tue Jul 22 07:03:00 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: phar.c,v 1.370.2.35 2008/07/20 14:42:34 dmitry Exp $ */ +/* $Id: phar.c,v 1.370.2.36 2008/07/22 07:03:00 dmitry Exp $ */ #define PHAR_MAIN 1 #include "phar_internal.h" @@ -3283,6 +3283,8 @@ PHP_MINIT_FUNCTION(phar) /* {{{ */ { + phar_mime_type mime; + ZEND_INIT_MODULE_GLOBALS(phar, php_phar_init_globals_module, NULL); REGISTER_INI_ENTRIES(); @@ -3301,6 +3303,55 @@ phar_intercept_functions_init(TSRMLS_C); + zend_hash_init(&PHAR_G(mime_types), 0, NULL, NULL, 1); + +#define PHAR_SET_MIME(mimetype, ret, fileext) \ + mime.mime = mimetype; \ + mime.len = sizeof((mimetype))+1; \ + mime.type = ret; \ + zend_hash_add(&PHAR_G(mime_types), fileext, sizeof(fileext)-1, (void *)&mime, sizeof(phar_mime_type), NULL); \ + + PHAR_SET_MIME("text/html", PHAR_MIME_PHPS, "phps") + PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "c") + PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "cc") + PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "cpp") + PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "c++") + PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "dtd") + PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "h") + PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "log") + PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "rng") + PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "txt") + PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "xsd") + PHAR_SET_MIME("", PHAR_MIME_PHP, "php") + PHAR_SET_MIME("", PHAR_MIME_PHP, "inc") + PHAR_SET_MIME("video/avi", PHAR_MIME_OTHER, "avi") + PHAR_SET_MIME("image/bmp", PHAR_MIME_OTHER, "bmp") + PHAR_SET_MIME("text/css", PHAR_MIME_OTHER, "css") + PHAR_SET_MIME("image/gif", PHAR_MIME_OTHER, "gif") + PHAR_SET_MIME("text/html", PHAR_MIME_OTHER, "htm") + PHAR_SET_MIME("text/html", PHAR_MIME_OTHER, "html") + PHAR_SET_MIME("text/html", PHAR_MIME_OTHER, "htmls") + PHAR_SET_MIME("image/x-ico", PHAR_MIME_OTHER, "ico") + PHAR_SET_MIME("image/jpeg", PHAR_MIME_OTHER, "jpe") + PHAR_SET_MIME("image/jpeg", PHAR_MIME_OTHER, "jpg") + PHAR_SET_MIME("image/jpeg", PHAR_MIME_OTHER, "jpeg") + PHAR_SET_MIME("application/x-javascript", PHAR_MIME_OTHER, "js") + PHAR_SET_MIME("audio/midi", PHAR_MIME_OTHER, "midi") + PHAR_SET_MIME("audio/midi", PHAR_MIME_OTHER, "mid") + PHAR_SET_MIME("audio/mod", PHAR_MIME_OTHER, "mod") + PHAR_SET_MIME("movie/quicktime", PHAR_MIME_OTHER, "mov") + PHAR_SET_MIME("audio/mp3", PHAR_MIME_OTHER, "mp3") + PHAR_SET_MIME("video/mpeg", PHAR_MIME_OTHER, "mpg") + PHAR_SET_MIME("video/mpeg", PHAR_MIME_OTHER, "mpeg") + PHAR_SET_MIME("application/pdf", PHAR_MIME_OTHER, "pdf") + PHAR_SET_MIME("image/png", PHAR_MIME_OTHER, "png") + PHAR_SET_MIME("application/shockwave-flash", PHAR_MIME_OTHER, "swf") + PHAR_SET_MIME("image/tiff", PHAR_MIME_OTHER, "tif") + PHAR_SET_MIME("image/tiff", PHAR_MIME_OTHER, "tiff") + PHAR_SET_MIME("audio/wav", PHAR_MIME_OTHER, "wav") + PHAR_SET_MIME("image/xbm", PHAR_MIME_OTHER, "xbm") + PHAR_SET_MIME("text/xml", PHAR_MIME_OTHER, "xml") + return php_register_url_stream_wrapper("phar", &php_stream_phar_wrapper TSRMLS_CC); } /* }}} */ @@ -3309,6 +3360,8 @@ { php_unregister_url_stream_wrapper("phar" TSRMLS_CC); + zend_hash_destroy(&PHAR_G(mime_types)); + phar_intercept_functions_shutdown(TSRMLS_C); if (zend_compile_file == phar_compile_file) { @@ -3347,16 +3400,13 @@ phar_entry_fp *stuff = (phar_entry_fp *) ecalloc(zend_hash_num_elements(&cached_phars), sizeof(phar_entry_fp)); for (zend_hash_internal_pointer_reset(&cached_phars); - zend_hash_has_more_elements(&cached_phars) == SUCCESS; + zend_hash_get_current_data(&cached_phars, (void **)&pphar) == SUCCESS; zend_hash_move_forward(&cached_phars)) { - if (zend_hash_get_current_data(&cached_phars, (void **)&pphar) == FAILURE) { - continue; - } stuff[pphar[0]->phar_pos].manifest = (phar_entry_fp_info *) ecalloc( zend_hash_num_elements(&(pphar[0]->manifest)), sizeof(phar_entry_fp_info)); } PHAR_GLOBALS->cached_fp = stuff; } - zend_hash_init(&(PHAR_GLOBALS->phar_SERVER_mung_list), 5, zend_get_hash_value, NULL, 0); + PHAR_GLOBALS->phar_SERVER_mung_list = 0; PHAR_G(cwd) = NULL; PHAR_G(cwd_len) = 0; PHAR_G(cwd_init) = 0; @@ -3377,7 +3427,7 @@ PHAR_GLOBALS->phar_alias_map.arBuckets = NULL; zend_hash_destroy(&(PHAR_GLOBALS->phar_fname_map)); PHAR_GLOBALS->phar_fname_map.arBuckets = NULL; - zend_hash_destroy(&(PHAR_GLOBALS->phar_SERVER_mung_list)); + PHAR_GLOBALS->phar_SERVER_mung_list = 0; if (PHAR_GLOBALS->cached_fp) { for (i = 0; i < zend_hash_num_elements(&cached_phars); ++i) { if (PHAR_GLOBALS->cached_fp[i].fp) { @@ -3391,7 +3441,6 @@ efree(PHAR_GLOBALS->cached_fp); PHAR_GLOBALS->cached_fp = 0; } - PHAR_GLOBALS->phar_SERVER_mung_list.arBuckets = NULL; PHAR_GLOBALS->request_init = 0; if (PHAR_G(cwd)) { efree(PHAR_G(cwd)); @@ -3412,7 +3461,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.35 $"); + php_info_print_table_row(2, "CVS revision", "$Revision: 1.370.2.36 $"); 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/phar_internal.h?r1=1.109.2.21&r2=1.109.2.22&diff_format=u Index: php-src/ext/phar/phar_internal.h diff -u php-src/ext/phar/phar_internal.h:1.109.2.21 php-src/ext/phar/phar_internal.h:1.109.2.22 --- php-src/ext/phar/phar_internal.h:1.109.2.21 Sun Jul 20 14:42:34 2008 +++ php-src/ext/phar/phar_internal.h Tue Jul 22 07:03:00 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: phar_internal.h,v 1.109.2.21 2008/07/20 14:42:34 dmitry Exp $ */ +/* $Id: phar_internal.h,v 1.109.2.22 2008/07/22 07:03:00 dmitry Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -141,6 +141,11 @@ #define TAR_DIR '5' #define TAR_NEW '8' +#define PHAR_MUNG_PHP_SELF (1<<0) +#define PHAR_MUNG_REQUEST_URI (1<<1) +#define PHAR_MUNG_SCRIPT_NAME (1<<2) +#define PHAR_MUNG_SCRIPT_FILENAME (1<<3) + typedef struct _phar_entry_fp phar_entry_fp; typedef struct _phar_archive_data phar_archive_data; @@ -149,7 +154,7 @@ /* for cached phars, this is a per-process store of fp/ufp */ phar_entry_fp *cached_fp; HashTable phar_alias_map; - HashTable phar_SERVER_mung_list; + int phar_SERVER_mung_list; int readonly; char* cache_list; int manifest_cached; @@ -197,6 +202,7 @@ char* last_alias; int last_alias_len; phar_archive_data* last_phar; + HashTable mime_types; ZEND_END_MODULE_GLOBALS(phar) ZEND_EXTERN_MODULE_GLOBALS(phar) http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar_object.c?r1=1.266.2.35&r2=1.266.2.36&diff_format=u Index: php-src/ext/phar/phar_object.c diff -u php-src/ext/phar/phar_object.c:1.266.2.35 php-src/ext/phar/phar_object.c:1.266.2.36 --- php-src/ext/phar/phar_object.c:1.266.2.35 Wed Jul 16 15:09:39 2008 +++ php-src/ext/phar/phar_object.c Tue Jul 22 07:03:00 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: phar_object.c,v 1.266.2.35 2008/07/16 15:09:39 dmitry Exp $ */ +/* $Id: phar_object.c,v 1.266.2.36 2008/07/22 07:03:00 dmitry Exp $ */ #include "phar_internal.h" #include "func_interceptors.h" @@ -50,21 +50,24 @@ } /* }}} */ -static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char *basename, int basename_len, char *request_uri, int request_uri_len TSRMLS_DC) /* {{{ */ +static void phar_mung_server_vars(char *fname, char *entry, int entry_len, char *basename, char *request_uri, int request_uri_len TSRMLS_DC) /* {{{ */ { - zval **_SERVER, **stuff; + HashTable *_SERVER; + zval **stuff; char *path_info; + int basename_len = strlen(basename); /* "tweak" $_SERVER variables requested in earlier call to Phar::mungServer() */ - if (SUCCESS != zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **) &_SERVER)) { + if (!PG(http_globals)[TRACK_VARS_SERVER]) { return; } + _SERVER = Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]); + /* PATH_INFO and PATH_TRANSLATED should always be munged */ - if (SUCCESS == zend_hash_find(Z_ARRVAL_PP(_SERVER), "PATH_INFO", sizeof("PATH_INFO"), (void **) &stuff)) { + if (SUCCESS == zend_hash_find(_SERVER, "PATH_INFO", sizeof("PATH_INFO"), (void **) &stuff)) { int code; zval *temp; - char newname[] = "PHAR_PATH_INFO"; path_info = Z_STRVAL_PP(stuff); code = Z_STRLEN_PP(stuff); @@ -73,13 +76,12 @@ MAKE_STD_ZVAL(temp); ZVAL_STRINGL(temp, path_info, code, 0); - zend_hash_update(Z_ARRVAL_PP(_SERVER), newname, sizeof(newname), (void *) &temp, sizeof(zval **), NULL); + zend_hash_update(_SERVER, "PHAR_PATH_INFO", sizeof("PHAR_PATH_INFO"), (void *) &temp, sizeof(zval **), NULL); } } - if (SUCCESS == zend_hash_find(Z_ARRVAL_PP(_SERVER), "PATH_TRANSLATED", sizeof("PATH_TRANSLATED"), (void **) &stuff)) { + if (SUCCESS == zend_hash_find(_SERVER, "PATH_TRANSLATED", sizeof("PATH_TRANSLATED"), (void **) &stuff)) { int code; zval *temp; - char newname[] = "PHAR_PATH_TRANSLATED"; path_info = Z_STRVAL_PP(stuff); code = Z_STRLEN_PP(stuff); @@ -87,16 +89,15 @@ MAKE_STD_ZVAL(temp); ZVAL_STRINGL(temp, path_info, code, 0); - zend_hash_update(Z_ARRVAL_PP(_SERVER), newname, sizeof(newname), (void *) &temp, sizeof(zval **), NULL); + zend_hash_update(_SERVER, "PHAR_PATH_TRANSLATED", sizeof("PHAR_PATH_TRANSLATED"), (void *) &temp, sizeof(zval **), NULL); } - if (!PHAR_GLOBALS->phar_SERVER_mung_list.arBuckets || !zend_hash_num_elements(&(PHAR_GLOBALS->phar_SERVER_mung_list))) { + if (!PHAR_GLOBALS->phar_SERVER_mung_list) { return; } - if (zend_hash_exists(&(PHAR_GLOBALS->phar_SERVER_mung_list), "REQUEST_URI", sizeof("REQUEST_URI")-1)) { - if (SUCCESS == zend_hash_find(Z_ARRVAL_PP(_SERVER), "REQUEST_URI", sizeof("REQUEST_URI"), (void **) &stuff)) { + if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_REQUEST_URI) { + if (SUCCESS == zend_hash_find(_SERVER, "REQUEST_URI", sizeof("REQUEST_URI"), (void **) &stuff)) { int code; zval *temp; - char newname[] = "PHAR_REQUEST_URI"; path_info = Z_STRVAL_PP(stuff); code = Z_STRLEN_PP(stuff); @@ -105,15 +106,14 @@ MAKE_STD_ZVAL(temp); ZVAL_STRINGL(temp, path_info, code, 0); - zend_hash_update(Z_ARRVAL_PP(_SERVER), newname, sizeof(newname), (void *) &temp, sizeof(zval **), NULL); + zend_hash_update(_SERVER, "PHAR_REQUEST_URI", sizeof("PHAR_REQUEST_URI"), (void *) &temp, sizeof(zval **), NULL); } } } - if (zend_hash_exists(&(PHAR_GLOBALS->phar_SERVER_mung_list), "PHP_SELF", sizeof("PHP_SELF")-1)) { - if (SUCCESS == zend_hash_find(Z_ARRVAL_PP(_SERVER), "PHP_SELF", sizeof("PHP_SELF"), (void **) &stuff)) { + if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_PHP_SELF) { + if (SUCCESS == zend_hash_find(_SERVER, "PHP_SELF", sizeof("PHP_SELF"), (void **) &stuff)) { int code; zval *temp; - char newname[] = "PHAR_PHP_SELF"; path_info = Z_STRVAL_PP(stuff); code = Z_STRLEN_PP(stuff); @@ -122,16 +122,15 @@ MAKE_STD_ZVAL(temp); ZVAL_STRINGL(temp, path_info, code, 0); - zend_hash_update(Z_ARRVAL_PP(_SERVER), newname, sizeof(newname), (void *) &temp, sizeof(zval **), NULL); + zend_hash_update(_SERVER, "PHAR_PHP_SELF", sizeof("PHAR_PHP_SELF"), (void *) &temp, sizeof(zval **), NULL); } } } - if (zend_hash_exists(&(PHAR_GLOBALS->phar_SERVER_mung_list), "SCRIPT_NAME", sizeof("SCRIPT_NAME")-1)) { - if (SUCCESS == zend_hash_find(Z_ARRVAL_PP(_SERVER), "SCRIPT_NAME", sizeof("SCRIPT_NAME"), (void **) &stuff)) { + if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_SCRIPT_NAME) { + if (SUCCESS == zend_hash_find(_SERVER, "SCRIPT_NAME", sizeof("SCRIPT_NAME"), (void **) &stuff)) { int code; zval *temp; - char newname[] = "PHAR_SCRIPT_NAME"; path_info = Z_STRVAL_PP(stuff); code = Z_STRLEN_PP(stuff); @@ -139,15 +138,14 @@ MAKE_STD_ZVAL(temp); ZVAL_STRINGL(temp, path_info, code, 0); - zend_hash_update(Z_ARRVAL_PP(_SERVER), newname, sizeof(newname), (void *) &temp, sizeof(zval **), NULL); + zend_hash_update(_SERVER, "PHAR_SCRIPT_NAME", sizeof("PHAR_SCRIPT_NAME"), (void *) &temp, sizeof(zval **), NULL); } } - if (zend_hash_exists(&(PHAR_GLOBALS->phar_SERVER_mung_list), "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME")-1)) { - if (SUCCESS == zend_hash_find(Z_ARRVAL_PP(_SERVER), "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME"), (void **) &stuff)) { + if (PHAR_GLOBALS->phar_SERVER_mung_list & PHAR_MUNG_SCRIPT_FILENAME) { + if (SUCCESS == zend_hash_find(_SERVER, "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME"), (void **) &stuff)) { int code; zval *temp; - char newname[] = "PHAR_SCRIPT_FILENAME"; path_info = Z_STRVAL_PP(stuff); code = Z_STRLEN_PP(stuff); @@ -155,19 +153,19 @@ MAKE_STD_ZVAL(temp); ZVAL_STRINGL(temp, path_info, code, 0); - zend_hash_update(Z_ARRVAL_PP(_SERVER), newname, sizeof(newname), (void *) &temp, sizeof(zval **), NULL); + zend_hash_update(_SERVER, "PHAR_SCRIPT_FILENAME", sizeof("PHAR_SCRIPT_FILENAME"), (void *) &temp, sizeof(zval **), NULL); } } } /* }}} */ -static int phar_file_action(phar_archive_data *phar, phar_entry_info *info, char *mime_type, int code, char *entry, int entry_len, char *arch, int arch_len, char *basename, int basename_len, char *ru, int ru_len TSRMLS_DC) /* {{{ */ +static int phar_file_action(phar_archive_data *phar, phar_entry_info *info, char *mime_type, int code, char *entry, int entry_len, char *arch, int arch_len, char *basename, char *ru, int ru_len TSRMLS_DC) /* {{{ */ { char *name = NULL, buf[8192], *cwd; zend_syntax_highlighter_ini syntax_highlighter_ini; sapi_header_line ctr = {0}; size_t got; - int dummy = 1, name_len, ret; + int dummy = 1, name_len; zend_file_handle file_handle; zend_op_array *new_op_array; zval *result = NULL; @@ -234,7 +232,7 @@ zend_bailout(); case PHAR_MIME_PHP: if (basename) { - phar_mung_server_vars(arch, entry, entry_len, basename, basename_len, ru, ru_len TSRMLS_CC); + phar_mung_server_vars(arch, entry, entry_len, basename, ru, ru_len TSRMLS_CC); efree(basename); } if (entry[0] == '/') { @@ -251,8 +249,8 @@ PHAR_G(cwd) = NULL; PHAR_G(cwd_len) = 0; - if (!zend_hash_exists(&EG(included_files), name, name_len+1)) { - if ((cwd = strrchr(entry, '/'))) { + if (zend_hash_add(&EG(included_files), name, name_len+1, (void *)&dummy, sizeof(int), NULL) == SUCCESS) { + if ((cwd = zend_memrchr(entry, '/', entry_len))) { PHAR_G(cwd_init) = 1; if (entry == cwd) { /* root directory */ @@ -267,8 +265,8 @@ } } new_op_array = zend_compile_file(&file_handle, ZEND_REQUIRE TSRMLS_CC); - if (new_op_array) { - zend_hash_add(&EG(included_files), name, name_len+1, (void *)&dummy, sizeof(int), NULL); + if (!new_op_array) { + zend_hash_del(&EG(included_files), name, name_len+1); } zend_destroy_file_handle(&file_handle TSRMLS_CC); } else { @@ -330,7 +328,7 @@ info = phar_get_entry_info(phar, f404, f404_len, NULL, 1 TSRMLS_CC); if (info) { - phar_file_action(phar, info, "text/html", PHAR_MIME_PHP, f404, f404_len, fname, fname_len, NULL, 0, NULL, 0 TSRMLS_CC); + phar_file_action(phar, info, "text/html", PHAR_MIME_PHP, f404, f404_len, fname, fname_len, NULL, NULL, 0 TSRMLS_CC); return; } } @@ -524,12 +522,10 @@ */ PHP_METHOD(Phar, webPhar) { - HashTable mimetypes; - phar_mime_type mime; zval *mimeoverride = NULL, *rewrite = NULL; char *alias = NULL, *error, *index_php = NULL, *f404 = NULL, *ru = NULL; int alias_len = 0, ret, f404_len = 0, free_pathinfo = 0, ru_len = 0; - char *fname, *basename, *path_info, *mime_type, *entry, *pt; + char *fname, *basename, *path_info, *mime_type = NULL, *entry, *pt; int fname_len, entry_len, code, index_php_len = 0, not_cgi; phar_archive_data *phar = NULL; phar_entry_info *info; @@ -557,7 +553,7 @@ fname = estrndup(fname, fname_len); phar_unixify_path_separators(fname, fname_len); #endif - basename = strrchr(fname, '/'); + basename = zend_memrchr(fname, '/', fname_len); if (!basename) { basename = fname; } else { @@ -566,26 +562,52 @@ if ((strlen(sapi_module.name) == sizeof("cgi-fcgi")-1 && !strncmp(sapi_module.name, "cgi-fcgi", sizeof("cgi-fcgi")-1)) || (strlen(sapi_module.name) == sizeof("cgi")-1 && !strncmp(sapi_module.name, "cgi", sizeof("cgi")-1))) { - char *testit; - testit = sapi_getenv("SCRIPT_NAME", sizeof("SCRIPT_NAME")-1 TSRMLS_CC); - if (!(pt = strstr(testit, basename))) { - efree(testit); - return; - } - path_info = sapi_getenv("PATH_INFO", sizeof("PATH_INFO")-1 TSRMLS_CC); - if (path_info) { - entry = path_info; - entry_len = strlen(entry); - spprintf(&path_info, 0, "%s%s", testit, path_info); - free_pathinfo = 1; + if (PG(http_globals)[TRACK_VARS_SERVER]) { + HashTable *ht = Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]); + zval **z_script_name, **z_path_info; + + if (SUCCESS != zend_hash_find(ht, "SCRIPT_NAME", sizeof("SCRIPT_NAME"), (void**)&z_script_name) || + IS_STRING != Z_TYPE_PP(z_script_name) || + !strstr(Z_STRVAL_PP(z_script_name), basename)) { + return; + } + if (SUCCESS == zend_hash_find(ht, "PATH_INFO", sizeof("PATH_INFO"), (void**)&z_path_info) && + IS_STRING == Z_TYPE_PP(z_path_info)) { + entry_len = Z_STRLEN_PP(z_path_info); + entry = estrndup(Z_STRVAL_PP(z_path_info), entry_len); + path_info = emalloc(Z_STRLEN_PP(z_script_name) + entry_len + 1); + memcpy(path_info, Z_STRVAL_PP(z_script_name), Z_STRLEN_PP(z_script_name)); + memcpy(path_info + Z_STRLEN_PP(z_script_name), entry, entry_len + 1); + free_pathinfo = 1; + } else { + entry_len = 0; + entry = estrndup("", 0); + path_info = Z_STRVAL_PP(z_script_name); + } + pt = estrndup(Z_STRVAL_PP(z_script_name), Z_STRLEN_PP(z_script_name)); } else { - path_info = testit; - free_pathinfo = 1; - entry = estrndup("", 0); - entry_len = 0; + char *testit; + + testit = sapi_getenv("SCRIPT_NAME", sizeof("SCRIPT_NAME")-1 TSRMLS_CC); + if (!(pt = strstr(testit, basename))) { + efree(testit); + return; + } + path_info = sapi_getenv("PATH_INFO", sizeof("PATH_INFO")-1 TSRMLS_CC); + if (path_info) { + entry = path_info; + entry_len = strlen(entry); + spprintf(&path_info, 0, "%s%s", testit, path_info); + free_pathinfo = 1; + } else { + path_info = testit; + free_pathinfo = 1; + entry = estrndup("", 0); + entry_len = 0; + } + pt = estrndup(testit, (pt - testit) + (fname_len - (basename - fname))); } - pt = estrndup(testit, (pt - testit) + (fname_len - (basename - fname))); not_cgi = 0; } else { path_info = SG(request_info).request_uri; @@ -744,124 +766,46 @@ zend_bailout(); } - /* set up mime types */ - zend_hash_init(&mimetypes, sizeof(phar_mime_type *), zend_get_hash_value, NULL, 0); -#define PHAR_SET_MIME(mimetype, ret, fileext) \ - mime.mime = mimetype; \ - mime.len = sizeof((mimetype))+1; \ - mime.type = ret; \ - zend_hash_add(&mimetypes, fileext, sizeof(fileext)-1, (void *)&mime, sizeof(phar_mime_type), NULL); \ - - PHAR_SET_MIME("text/html", PHAR_MIME_PHPS, "phps") - PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "c") - PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "cc") - PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "cpp") - PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "c++") - PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "dtd") - PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "h") - PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "log") - PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "rng") - PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "txt") - PHAR_SET_MIME("text/plain", PHAR_MIME_OTHER, "xsd") - PHAR_SET_MIME("", PHAR_MIME_PHP, "php") - PHAR_SET_MIME("", PHAR_MIME_PHP, "inc") - PHAR_SET_MIME("video/avi", PHAR_MIME_OTHER, "avi") - PHAR_SET_MIME("image/bmp", PHAR_MIME_OTHER, "bmp") - PHAR_SET_MIME("text/css", PHAR_MIME_OTHER, "css") - PHAR_SET_MIME("image/gif", PHAR_MIME_OTHER, "gif") - PHAR_SET_MIME("text/html", PHAR_MIME_OTHER, "htm") - PHAR_SET_MIME("text/html", PHAR_MIME_OTHER, "html") - PHAR_SET_MIME("text/html", PHAR_MIME_OTHER, "htmls") - PHAR_SET_MIME("image/x-ico", PHAR_MIME_OTHER, "ico") - PHAR_SET_MIME("image/jpeg", PHAR_MIME_OTHER, "jpe") - PHAR_SET_MIME("image/jpeg", PHAR_MIME_OTHER, "jpg") - PHAR_SET_MIME("image/jpeg", PHAR_MIME_OTHER, "jpeg") - PHAR_SET_MIME("application/x-javascript", PHAR_MIME_OTHER, "js") - PHAR_SET_MIME("audio/midi", PHAR_MIME_OTHER, "midi") - PHAR_SET_MIME("audio/midi", PHAR_MIME_OTHER, "mid") - PHAR_SET_MIME("audio/mod", PHAR_MIME_OTHER, "mod") - PHAR_SET_MIME("movie/quicktime", PHAR_MIME_OTHER, "mov") - PHAR_SET_MIME("audio/mp3", PHAR_MIME_OTHER, "mp3") - PHAR_SET_MIME("video/mpeg", PHAR_MIME_OTHER, "mpg") - PHAR_SET_MIME("video/mpeg", PHAR_MIME_OTHER, "mpeg") - PHAR_SET_MIME("application/pdf", PHAR_MIME_OTHER, "pdf") - PHAR_SET_MIME("image/png", PHAR_MIME_OTHER, "png") - PHAR_SET_MIME("application/shockwave-flash", PHAR_MIME_OTHER, "swf") - PHAR_SET_MIME("image/tiff", PHAR_MIME_OTHER, "tif") - PHAR_SET_MIME("image/tiff", PHAR_MIME_OTHER, "tiff") - PHAR_SET_MIME("audio/wav", PHAR_MIME_OTHER, "wav") - PHAR_SET_MIME("image/xbm", PHAR_MIME_OTHER, "xbm") - PHAR_SET_MIME("text/xml", PHAR_MIME_OTHER, "xml") - - /* set up user overrides */ -#define PHAR_SET_USER_MIME(ret) \ - if (Z_TYPE_PP(val) == IS_LONG) { \ - mime.mime = ""; \ - mime.len = 0; \ - } else { \ - mime.mime = Z_STRVAL_PP(val); \ - mime.len = Z_STRLEN_PP(val); \ - } \ - mime.type = ret; \ - zend_hash_update(&mimetypes, str_key, keylen-1, (void *)&mime, sizeof(phar_mime_type), NULL); - - if (mimeoverride) { - if (!zend_hash_num_elements(Z_ARRVAL_P(mimeoverride))) { - goto no_mimes; - } - for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(mimeoverride)); SUCCESS == zend_hash_has_more_elements(Z_ARRVAL_P(mimeoverride)); zend_hash_move_forward(Z_ARRVAL_P(mimeoverride))) { - zval **val; - phar_zstr key; - char *str_key; - uint keylen; - ulong intkey; - - if (HASH_KEY_IS_LONG == zend_hash_get_current_key_ex(Z_ARRVAL_P(mimeoverride), &key, &keylen, &intkey, 0, NULL)) { - zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Key of MIME type overrides array must be a file extension, was \"%d\"", intkey); + if (mimeoverride && zend_hash_num_elements(Z_ARRVAL_P(mimeoverride))) { + char *ext = zend_memrchr(entry, '.', entry_len); + zval **val; + + if (ext) { + ++ext; + + if (SUCCESS == zend_hash_find(Z_ARRVAL_P(mimeoverride), ext, strlen(ext)+1, (void **) &val)) { + switch (Z_TYPE_PP(val)) { + case IS_LONG : + if (Z_LVAL_PP(val) == PHAR_MIME_PHP || Z_LVAL_PP(val) == PHAR_MIME_PHPS) { + mime_type = ""; + code = Z_LVAL_PP(val); + } else { + zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Unknown mime type specifier used, only Phar::PHP, Phar::PHPS and a mime type string are allowed"); #ifdef PHP_WIN32 - efree(fname); -#endif - RETURN_FALSE; - } - - PHAR_STR(key, str_key); - - if (FAILURE == zend_hash_get_current_data(Z_ARRVAL_P(mimeoverride), (void **) &val)) { - zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Failed to retrieve Mime type for extension \"%s\"", str_key); -#ifdef PHP_WIN32 - efree(fname); + efree(fname); #endif - RETURN_FALSE; - } - switch (Z_TYPE_PP(val)) { - case IS_LONG : - if (Z_LVAL_PP(val) == PHAR_MIME_PHP || Z_LVAL_PP(val) == PHAR_MIME_PHPS) { - PHAR_SET_USER_MIME((char) Z_LVAL_PP(val)) - } else { - zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Unknown mime type specifier used, only Phar::PHP, Phar::PHPS and a mime type string are allowed"); + RETURN_FALSE; + } + break; + case IS_STRING : + mime_type = Z_STRVAL_PP(val); + code = PHAR_MIME_OTHER; + break; + default : + zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Unknown mime type specifier used (not a string or int), only Phar::PHP, Phar::PHPS and a mime type string are allowed"); #ifdef PHP_WIN32 efree(fname); #endif RETURN_FALSE; - } - break; - case IS_STRING : - PHAR_SET_USER_MIME(PHAR_MIME_OTHER) - break; - default : - zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Unknown mime type specifier used (not a string or int), only Phar::PHP, Phar::PHPS and a mime type string are allowed"); -#ifdef PHP_WIN32 - efree(fname); -#endif - RETURN_FALSE; + } } } } -no_mimes: - code = phar_file_type(&mimetypes, entry, &mime_type TSRMLS_CC); - zend_hash_destroy(&mimetypes); - ret = phar_file_action(phar, info, mime_type, code, entry, entry_len, fname, fname_len, pt, strlen(pt), ru, ru_len TSRMLS_CC); + if (!mime_type) { + code = phar_file_type(&PHAR_G(mime_types), entry, &mime_type TSRMLS_CC); + } + ret = phar_file_action(phar, info, mime_type, code, entry, entry_len, fname, fname_len, pt, ru, ru_len TSRMLS_CC); } /* }}} */ @@ -874,7 +818,6 @@ PHP_METHOD(Phar, mungServer) { zval *mungvalues; - int php_self = 0, request_uri = 0, script_name = 0, script_filename = 0; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &mungvalues) == FAILURE) { return; } @@ -901,35 +844,19 @@ zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Non-string value passed to Phar::mungServer(), expecting an array of any of these strings: PHP_SELF, REQUEST_URI, SCRIPT_FILENAME, SCRIPT_NAME"); return; } - if (!php_self && Z_STRLEN_PP(data) == sizeof("PHP_SELF")-1 && !strncmp(Z_STRVAL_PP(data), "PHP_SELF", sizeof("PHP_SELF")-1)) { - if (SUCCESS != zend_hash_add_empty_element(&(PHAR_GLOBALS->phar_SERVER_mung_list), "PHP_SELF", sizeof("PHP_SELF")-1)) { - zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Unable to add PHP_SELF to Phar::mungServer() list of values to mung"); - return; - } - php_self = 1; + if (Z_STRLEN_PP(data) == sizeof("PHP_SELF")-1 && !strncmp(Z_STRVAL_PP(data), "PHP_SELF", sizeof("PHP_SELF")-1)) { + PHAR_GLOBALS->phar_SERVER_mung_list |= PHAR_MUNG_PHP_SELF; } if (Z_STRLEN_PP(data) == sizeof("REQUEST_URI")-1) { - if (!request_uri && !strncmp(Z_STRVAL_PP(data), "REQUEST_URI", sizeof("REQUEST_URI")-1)) { - if (SUCCESS != zend_hash_add_empty_element(&(PHAR_GLOBALS->phar_SERVER_mung_list), "REQUEST_URI", sizeof("REQUEST_URI")-1)) { - zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Unable to add REQUEST_URI to Phar::mungServer() list of values to mung"); - return; - } - request_uri = 1; + if (!strncmp(Z_STRVAL_PP(data), "REQUEST_URI", sizeof("REQUEST_URI")-1)) { + PHAR_GLOBALS->phar_SERVER_mung_list |= PHAR_MUNG_REQUEST_URI; } - if (!script_name && !strncmp(Z_STRVAL_PP(data), "SCRIPT_NAME", sizeof("SCRIPT_NAME")-1)) { - if (SUCCESS != zend_hash_add_empty_element(&(PHAR_GLOBALS->phar_SERVER_mung_list), "SCRIPT_NAME", sizeof("SCRIPT_NAME")-1)) { - zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Unable to add SCRIPT_NAME to Phar::mungServer() list of values to mung"); - return; - } - script_name = 1; + if (!strncmp(Z_STRVAL_PP(data), "SCRIPT_NAME", sizeof("SCRIPT_NAME")-1)) { + PHAR_GLOBALS->phar_SERVER_mung_list |= PHAR_MUNG_SCRIPT_NAME; } } - if (!script_filename && Z_STRLEN_PP(data) == sizeof("SCRIPT_FILENAME")-1 && !strncmp(Z_STRVAL_PP(data), "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME")-1)) { - if (SUCCESS != zend_hash_add_empty_element(&(PHAR_GLOBALS->phar_SERVER_mung_list), "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME")-1)) { - zend_throw_exception_ex(phar_ce_PharException, 0 TSRMLS_CC, "Unable to add SCRIPT_FILENAME to Phar::mungServer() list of values to mung"); - return; - } - script_filename = 1; + if (Z_STRLEN_PP(data) == sizeof("SCRIPT_FILENAME")-1 && !strncmp(Z_STRVAL_PP(data), "SCRIPT_FILENAME", sizeof("SCRIPT_FILENAME")-1)) { + PHAR_GLOBALS->phar_SERVER_mung_list |= PHAR_MUNG_SCRIPT_FILENAME; } } } @@ -1948,7 +1875,7 @@ } oldpath = estrndup(phar->fname, phar->fname_len); - oldname = strrchr(phar->fname, '/'); + oldname = zend_memrchr(phar->fname, '/', phar->fname_len); ++oldname; basename = estrndup(oldname, strlen(oldname)); @@ -3777,7 +3704,7 @@ return FAILURE; } /* perform dirname */ - slash = strrchr(entry->filename, '/'); + slash = zend_memrchr(entry->filename, '/', entry->filename_len); if (slash) { fullpath[dest_len + (slash - entry->filename) + 1] = '\0'; } else { http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/frontcontroller11.phpt?r1=1.5.2.1&r2=1.5.2.2&diff_format=u Index: php-src/ext/phar/tests/frontcontroller11.phpt diff -u php-src/ext/phar/tests/frontcontroller11.phpt:1.5.2.1 php-src/ext/phar/tests/frontcontroller11.phpt:1.5.2.2 --- php-src/ext/phar/tests/frontcontroller11.phpt:1.5.2.1 Tue May 13 19:17:17 2008 +++ php-src/ext/phar/tests/frontcontroller11.phpt Tue Jul 22 07:03:00 2008 @@ -4,6 +4,7 @@ default_charset= --SKIPIF-- <?php if (!extension_loaded("phar")) die("skip"); ?> +<?php die("skip"); ?> --ENV-- SCRIPT_NAME=/frontcontroller11.php REQUEST_URI=/frontcontroller11.php/a.php http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/cache_list/frontcontroller11.phpt?r1=1.1.2.1&r2=1.1.2.2&diff_format=u Index: php-src/ext/phar/tests/cache_list/frontcontroller11.phpt diff -u php-src/ext/phar/tests/cache_list/frontcontroller11.phpt:1.1.2.1 php-src/ext/phar/tests/cache_list/frontcontroller11.phpt:1.1.2.2 --- php-src/ext/phar/tests/cache_list/frontcontroller11.phpt:1.1.2.1 Sun Jun 22 00:49:53 2008 +++ php-src/ext/phar/tests/cache_list/frontcontroller11.phpt Tue Jul 22 07:03:00 2008 @@ -5,6 +5,7 @@ phar.cache_list={PWD}/frontcontroller11.php --SKIPIF-- <?php if (!extension_loaded("phar")) die("skip"); ?> +<?php die("skip"); ?> --ENV-- SCRIPT_NAME=/frontcontroller11.php REQUEST_URI=/frontcontroller11.php/a.php http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/cache_list/files/frontcontroller6.phar?r1=1.1.2.1&r2=1.1.2.2&diff_format=u Index: php-src/ext/phar/tests/cache_list/files/frontcontroller6.phar http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/cache_list/files/frontcontroller7.phar?r1=1.1.2.1&r2=1.1.2.2&diff_format=u Index: php-src/ext/phar/tests/cache_list/files/frontcontroller7.phar http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/files/frontcontroller5.phar?r1=1.1&r2=1.1.2.1&diff_format=u Index: php-src/ext/phar/tests/files/frontcontroller5.phar http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/files/frontcontroller6.phar?r1=1.1&r2=1.1.2.1&diff_format=u Index: php-src/ext/phar/tests/files/frontcontroller6.phar http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/files/frontcontroller6.phar.inc?r1=1.1&r2=1.1.2.1&diff_format=u Index: php-src/ext/phar/tests/files/frontcontroller6.phar.inc diff -u php-src/ext/phar/tests/files/frontcontroller6.phar.inc:1.1 php-src/ext/phar/tests/files/frontcontroller6.phar.inc:1.1.2.1 --- php-src/ext/phar/tests/files/frontcontroller6.phar.inc:1.1 Wed Feb 20 13:11:39 2008 +++ php-src/ext/phar/tests/files/frontcontroller6.phar.inc Tue Jul 22 07:03:00 2008 @@ -5,7 +5,7 @@ $a['a.jpg'] = 'hio'; $a['a.phps'] = '<?php function hio(){}'; $a->setStub('<?php -Phar::webPhar("whatever", "index.php", null, array("blah" => 100)); +Phar::webPhar("whatever", "index.php", null, array("php" => 100)); echo "oops did not run\n"; var_dump($_ENV, $_SERVER); __HALT_COMPILER();'); http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/files/frontcontroller7.phar?r1=1.1&r2=1.1.2.1&diff_format=u Index: php-src/ext/phar/tests/files/frontcontroller7.phar http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/files/frontcontroller7.phar.inc?r1=1.1&r2=1.1.2.1&diff_format=u Index: php-src/ext/phar/tests/files/frontcontroller7.phar.inc diff -u php-src/ext/phar/tests/files/frontcontroller7.phar.inc:1.1 php-src/ext/phar/tests/files/frontcontroller7.phar.inc:1.1.2.1 --- php-src/ext/phar/tests/files/frontcontroller7.phar.inc:1.1 Wed Feb 20 13:11:39 2008 +++ php-src/ext/phar/tests/files/frontcontroller7.phar.inc Tue Jul 22 07:03:00 2008 @@ -5,7 +5,7 @@ $a['a.jpg'] = 'hio'; $a['a.phps'] = '<?php function hio(){}'; $a->setStub('<?php -Phar::webPhar("whatever", "index.php", null, array("blah" => null)); +Phar::webPhar("whatever", "index.php", null, array("php" => null)); echo "oops did not run\n"; var_dump($_ENV, $_SERVER); __HALT_COMPILER();'); http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/tar/frontcontroller11.phar.phpt?r1=1.5.2.1&r2=1.5.2.2&diff_format=u Index: php-src/ext/phar/tests/tar/frontcontroller11.phar.phpt diff -u php-src/ext/phar/tests/tar/frontcontroller11.phar.phpt:1.5.2.1 php-src/ext/phar/tests/tar/frontcontroller11.phar.phpt:1.5.2.2 --- php-src/ext/phar/tests/tar/frontcontroller11.phar.phpt:1.5.2.1 Tue May 13 19:17:17 2008 +++ php-src/ext/phar/tests/tar/frontcontroller11.phar.phpt Tue Jul 22 07:03:00 2008 @@ -4,6 +4,7 @@ default_charset= --SKIPIF-- <?php if (!extension_loaded("phar")) die("skip"); ?> +<?php die("skip"); ?> --ENV-- SCRIPT_NAME=/frontcontroller11.phar.php REQUEST_URI=/frontcontroller11.phar.php/a.php http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/tar/files/frontcontroller6.phar.inc?r1=1.1&r2=1.1.2.1&diff_format=u Index: php-src/ext/phar/tests/tar/files/frontcontroller6.phar.inc diff -u php-src/ext/phar/tests/tar/files/frontcontroller6.phar.inc:1.1 php-src/ext/phar/tests/tar/files/frontcontroller6.phar.inc:1.1.2.1 --- php-src/ext/phar/tests/tar/files/frontcontroller6.phar.inc:1.1 Tue Feb 12 16:42:34 2008 +++ php-src/ext/phar/tests/tar/files/frontcontroller6.phar.inc Tue Jul 22 07:03:00 2008 @@ -5,7 +5,7 @@ $a['a.jpg'] = 'hio'; $a['a.phps'] = '<?php function hio(){}'; $a->setStub('<?php -Phar::webPhar("whatever", "index.php", null, array("blah" => 100)); +Phar::webPhar("whatever", "index.php", null, array("php" => 100)); echo "oops did not run\n"; var_dump($_ENV, $_SERVER); __HALT_COMPILER();'); http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/tar/files/frontcontroller6.phar.tar?r1=1.1.2.1&r2=1.1.2.2&diff_format=u Index: php-src/ext/phar/tests/tar/files/frontcontroller6.phar.tar http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/tar/files/frontcontroller7.phar.inc?r1=1.1&r2=1.1.2.1&diff_format=u Index: php-src/ext/phar/tests/tar/files/frontcontroller7.phar.inc diff -u php-src/ext/phar/tests/tar/files/frontcontroller7.phar.inc:1.1 php-src/ext/phar/tests/tar/files/frontcontroller7.phar.inc:1.1.2.1 --- php-src/ext/phar/tests/tar/files/frontcontroller7.phar.inc:1.1 Tue Feb 12 16:42:34 2008 +++ php-src/ext/phar/tests/tar/files/frontcontroller7.phar.inc Tue Jul 22 07:03:00 2008 @@ -5,7 +5,7 @@ $a['a.jpg'] = 'hio'; $a['a.phps'] = '<?php function hio(){}'; $a->setStub('<?php -Phar::webPhar("whatever", "index.php", null, array("blah" => null)); +Phar::webPhar("whatever", "index.php", null, array("php" => null)); echo "oops did not run\n"; var_dump($_ENV, $_SERVER); __HALT_COMPILER();'); http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/tar/files/frontcontroller7.phar.tar?r1=1.1.2.1&r2=1.1.2.2&diff_format=u Index: php-src/ext/phar/tests/tar/files/frontcontroller7.phar.tar http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/zip/frontcontroller11.phar.phpt?r1=1.6.2.2&r2=1.6.2.3&diff_format=u Index: php-src/ext/phar/tests/zip/frontcontroller11.phar.phpt diff -u php-src/ext/phar/tests/zip/frontcontroller11.phar.phpt:1.6.2.2 php-src/ext/phar/tests/zip/frontcontroller11.phar.phpt:1.6.2.3 --- php-src/ext/phar/tests/zip/frontcontroller11.phar.phpt:1.6.2.2 Tue May 13 19:17:17 2008 +++ php-src/ext/phar/tests/zip/frontcontroller11.phar.phpt Tue Jul 22 07:03:00 2008 @@ -5,6 +5,7 @@ --SKIPIF-- <?php if (!extension_loaded("phar")) die("skip"); ?> <?php if (!extension_loaded("zlib")) die("skip zlib not available"); ?> +<?php die("skip"); ?> --ENV-- SCRIPT_NAME=/frontcontroller11.phar.php REQUEST_URI=/frontcontroller11.phar.php/a.php http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/zip/files/frontcontroller6.phar.inc?r1=1.1&r2=1.1.2.1&diff_format=u Index: php-src/ext/phar/tests/zip/files/frontcontroller6.phar.inc diff -u php-src/ext/phar/tests/zip/files/frontcontroller6.phar.inc:1.1 php-src/ext/phar/tests/zip/files/frontcontroller6.phar.inc:1.1.2.1 --- php-src/ext/phar/tests/zip/files/frontcontroller6.phar.inc:1.1 Mon Feb 11 20:55:43 2008 +++ php-src/ext/phar/tests/zip/files/frontcontroller6.phar.inc Tue Jul 22 07:03:00 2008 @@ -5,7 +5,7 @@ $a['a.jpg'] = 'hio'; $a['a.phps'] = '<?php function hio(){}'; $a->setStub('<?php -Phar::webPhar("whatever", "index.php", null, array("blah" => 100)); +Phar::webPhar("whatever", "index.php", null, array("php" => 100)); echo "oops did not run\n"; var_dump($_ENV, $_SERVER); __HALT_COMPILER();'); http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/zip/files/frontcontroller6.phar.zip?r1=1.1.2.1&r2=1.1.2.2&diff_format=u Index: php-src/ext/phar/tests/zip/files/frontcontroller6.phar.zip http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/zip/files/frontcontroller7.phar.inc?r1=1.1&r2=1.1.2.1&diff_format=u Index: php-src/ext/phar/tests/zip/files/frontcontroller7.phar.inc diff -u php-src/ext/phar/tests/zip/files/frontcontroller7.phar.inc:1.1 php-src/ext/phar/tests/zip/files/frontcontroller7.phar.inc:1.1.2.1 --- php-src/ext/phar/tests/zip/files/frontcontroller7.phar.inc:1.1 Mon Feb 11 20:55:43 2008 +++ php-src/ext/phar/tests/zip/files/frontcontroller7.phar.inc Tue Jul 22 07:03:00 2008 @@ -5,7 +5,7 @@ $a['a.jpg'] = 'hio'; $a['a.phps'] = '<?php function hio(){}'; $a->setStub('<?php -Phar::webPhar("whatever", "index.php", null, array("blah" => null)); +Phar::webPhar("whatever", "index.php", null, array("php" => null)); echo "oops did not run\n"; var_dump($_ENV, $_SERVER); __HALT_COMPILER();'); http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/zip/files/frontcontroller7.phar.zip?r1=1.1.2.1&r2=1.1.2.2&diff_format=u Index: php-src/ext/phar/tests/zip/files/frontcontroller7.phar.zip
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php