cellog Thu Feb 7 23:42:02 2008 UTC
Modified files:
/pecl/phar phar_object.c
/pecl/phar/tests frontcontroller10.phpt frontcontroller21.phpt
frontcontroller3.phar frontcontroller3.phar.inc
frontcontroller4.phar frontcontroller4.phar.inc
frontcontroller6.phpt frontcontroller8.phpt
withphar_web.phpt
/pecl/phar/tests/tar frontcontroller10.phar.phpt
frontcontroller21.phar.phpt
frontcontroller3.phar.inc
frontcontroller3.phar.tar
frontcontroller4.phar.inc
frontcontroller4.phar.tar
frontcontroller6.phar.phpt
frontcontroller8.phar.phpt
/pecl/phar/tests/zip frontcontroller10.phar.phpt
frontcontroller21.phar.phpt
frontcontroller3.phar.inc
frontcontroller3.phar.zip
frontcontroller4.phar.inc
frontcontroller4.phar.zip
frontcontroller6.phar.phpt
frontcontroller8.phar.phpt
Log:
[DOC]
refactor the $rewrites parameter in Phar::webPhar. Now it is a callback
that accepts the path requested. This callback should return the actual
filename
requested as a string, or false to deny access as HTTP 403.
Also fix incorrect munging of SCRIPT_NAME variable in mungServer
More importantly, Phar::webPhar now finds the filename hidden in:
http://localhost/myphar.phar/internal/file.php/extra/stuff
as 'internal/file.php' in phar 'myphar.phar' with REQUEST_URI
'/internal/file.php/extra/stuff'
this will allow pharring up apps that use REQUEST_URI for front controller
stuff.
http://cvs.php.net/viewvc.cgi/pecl/phar/phar_object.c?r1=1.143&r2=1.144&diff_format=u
Index: pecl/phar/phar_object.c
diff -u pecl/phar/phar_object.c:1.143 pecl/phar/phar_object.c:1.144
--- pecl/phar/phar_object.c:1.143 Thu Feb 7 04:24:56 2008
+++ pecl/phar/phar_object.c Thu Feb 7 23:42:02 2008
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: phar_object.c,v 1.143 2008/02/07 04:24:56 cellog Exp $ */
+/* $Id: phar_object.c,v 1.144 2008/02/07 23:42:02 cellog Exp $ */
#include "phar_internal.h"
#include "func_interceptors.h"
@@ -74,7 +74,7 @@
}
/* }}} */
-static void phar_mung_server_vars(char *fname, char *entry, int entry_len,
char *basename, int basename_len TSRMLS_DC)
+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)
{
zval **_SERVER, **stuff;
char *path_info;
@@ -83,66 +83,67 @@
if (SUCCESS != zend_hash_find(&EG(symbol_table), "_SERVER",
sizeof("_SERVER"), (void **) &_SERVER)) {
return;
}
-#define PHAR_MUNG_REPLACE(vname) \
- if (zend_hash_exists(&(PHAR_GLOBALS->phar_SERVER_mung_list), #vname,
sizeof(#vname)-1)) { \
- if (SUCCESS == zend_hash_find(Z_ARRVAL_PP(_SERVER), #vname,
sizeof(#vname), (void **) &stuff)) { \
- int code; \
- zval *temp; \
- char newname[sizeof("SCRIPT_FILENAME")+4]; \
- \
- path_info = Z_STRVAL_PP(stuff); \
- code = Z_STRLEN_PP(stuff); \
- Z_STRVAL_PP(stuff) = estrndup(Z_STRVAL_PP(stuff) +
basename_len, Z_STRLEN_PP(stuff) - basename_len); \
- Z_STRLEN_PP(stuff) -= basename_len; \
- \
- MAKE_STD_ZVAL(temp); \
- Z_TYPE_P(temp) = IS_STRING; \
- Z_STRVAL_P(temp) = path_info; \
- Z_STRLEN_P(temp) = code; \
- memset(newname, 0, sizeof("SCRIPT_FILENAME")+4); \
- memcpy(newname, "PHAR_", 5); \
- memcpy(newname + 5, #vname, sizeof(#vname)); \
- zend_hash_update(Z_ARRVAL_PP(_SERVER), newname,
strlen(newname)+1, (void *) &temp, sizeof(zval **), NULL); \
- } \
- }
/* 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)) {
int code;
zval *temp;
char newname[] = "PHAR_PATH_INFO";
-
+
path_info = Z_STRVAL_PP(stuff);
code = Z_STRLEN_PP(stuff);
- Z_STRVAL_PP(stuff) = estrndup(Z_STRVAL_PP(stuff) + entry_len,
Z_STRLEN_PP(stuff) - entry_len);
- Z_STRLEN_PP(stuff) -= entry_len;
-
+ ZVAL_STRINGL(*stuff, Z_STRVAL_PP(stuff) + entry_len,
Z_STRLEN_PP(stuff) - entry_len - request_uri_len, 1);
+
MAKE_STD_ZVAL(temp);
- Z_TYPE_P(temp) = IS_STRING;
- Z_STRVAL_P(temp) = path_info;
- Z_STRLEN_P(temp) = code;
- zend_hash_update(Z_ARRVAL_PP(_SERVER), newname,
strlen(newname)+1, (void *) &temp, sizeof(zval **), NULL);
+ ZVAL_STRINGL(temp, path_info, code, 0);
+ zend_hash_update(Z_ARRVAL_PP(_SERVER), newname,
sizeof(newname), (void *) &temp, sizeof(zval **), NULL);
}
if (SUCCESS == zend_hash_find(Z_ARRVAL_PP(_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);
Z_STRLEN_PP(stuff) = spprintf(&(Z_STRVAL_PP(stuff)), 4096,
"phar://%s%s", fname, entry);
-
- MAKE_STD_ZVAL(temp);
- Z_TYPE_P(temp) = IS_STRING;
- Z_STRVAL_P(temp) = path_info;
- Z_STRLEN_P(temp) = code;
- zend_hash_update(Z_ARRVAL_PP(_SERVER), newname,
strlen(newname)+1, (void *) &temp, sizeof(zval **), NULL);
+
+ 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);
}
if (!PHAR_GLOBALS->phar_SERVER_mung_list.arBuckets ||
!zend_hash_num_elements(&(PHAR_GLOBALS->phar_SERVER_mung_list))) {
return;
}
- PHAR_MUNG_REPLACE(REQUEST_URI);
- PHAR_MUNG_REPLACE(PHP_SELF);
+ 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)) {
+ int code;
+ zval *temp;
+ char newname[] = "PHAR_REQUEST_URI";
+
+ path_info = Z_STRVAL_PP(stuff);
+ code = Z_STRLEN_PP(stuff);
+ ZVAL_STRINGL(*stuff, Z_STRVAL_PP(stuff) + basename_len,
Z_STRLEN_PP(stuff) - basename_len, 1);
+
+ 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);
+ }
+ }
+ 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)) {
+ int code;
+ zval *temp;
+ char newname[] = "PHAR_PHP_SELF";
+
+ path_info = Z_STRVAL_PP(stuff);
+ code = Z_STRLEN_PP(stuff);
+ ZVAL_STRINGL(*stuff, Z_STRVAL_PP(stuff) + basename_len,
Z_STRLEN_PP(stuff) - basename_len, 1);
+
+ 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);
+ }
+ }
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)) {
@@ -152,13 +153,15 @@
path_info = Z_STRVAL_PP(stuff);
code = Z_STRLEN_PP(stuff);
- Z_STRLEN_PP(stuff) = spprintf(&(Z_STRVAL_PP(stuff)),
4096, "phar://%s%s", fname, entry);
+ if (entry[0] != '/') {
+ Z_STRLEN_PP(stuff) =
spprintf(&(Z_STRVAL_PP(stuff)), 4096, "phar://%s%s", fname, entry);
+ } else {
+ ZVAL_STRINGL(*stuff, entry, entry_len, 1);
+ }
- MAKE_STD_ZVAL(temp);
- Z_TYPE_P(temp) = IS_STRING;
- Z_STRVAL_P(temp) = path_info;
- Z_STRLEN_P(temp) = code;
- zend_hash_update(Z_ARRVAL_PP(_SERVER), newname,
strlen(newname)+1, (void *) &temp, sizeof(zval **), NULL);
+ 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);
}
}
@@ -167,21 +170,19 @@
int code;
zval *temp;
char newname[] = "PHAR_SCRIPT_FILENAME";
-
+
path_info = Z_STRVAL_PP(stuff);
code = Z_STRLEN_PP(stuff);
Z_STRLEN_PP(stuff) = spprintf(&(Z_STRVAL_PP(stuff)),
4096, "phar://%s%s", fname, entry);
-
- MAKE_STD_ZVAL(temp);
- Z_TYPE_P(temp) = IS_STRING;
- Z_STRVAL_P(temp) = path_info;
- Z_STRLEN_P(temp) = code;
- zend_hash_update(Z_ARRVAL_PP(_SERVER), newname,
strlen(newname)+1, (void *) &temp, sizeof(zval **), NULL);
+
+ 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);
}
}
}
-static int phar_file_action(phar_entry_data *phar, char *mime_type, int code,
char *entry, int entry_len, char *arch, int arch_len, char *basename, int
basename_len TSRMLS_DC)
+static int phar_file_action(phar_entry_data *phar, 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)
{
char *name = NULL, buf[8192], *cwd;
zend_syntax_highlighter_ini syntax_highlighter_ini;
@@ -203,8 +204,7 @@
}
php_get_highlight_struct(&syntax_highlighter_ini);
- if (highlight_file(name, &syntax_highlighter_ini
TSRMLS_CC) == FAILURE) {
- }
+ highlight_file(name, &syntax_highlighter_ini TSRMLS_CC);
phar_entry_delref(phar TSRMLS_CC);
efree(name);
@@ -255,7 +255,7 @@
return PHAR_MIME_OTHER;
case PHAR_MIME_PHP:
if (basename) {
- phar_mung_server_vars(arch, entry, entry_len,
basename, basename_len TSRMLS_CC);
+ phar_mung_server_vars(arch, entry, entry_len,
basename, basename_len, ru, ru_len TSRMLS_CC);
efree(basename);
}
phar_entry_delref(phar TSRMLS_CC);
@@ -327,7 +327,21 @@
return -1;
}
-void phar_do_404(char *fname, int fname_len, char *f404, int f404_len, char
*entry, int entry_len TSRMLS_DC)
+static void phar_do_403(char *entry, int entry_len TSRMLS_DC)
+{
+ sapi_header_line ctr = {0};
+
+ ctr.response_code = 403;
+ ctr.line_len = sizeof("HTTP/1.0 403 Access Denied");
+ ctr.line = "HTTP/1.0 403 Access Denied";
+ sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC);
+ sapi_send_headers(TSRMLS_C);
+ PHPWRITE("<html>\n <head>\n <title>Access Denied</title>\n </head>\n
<body>\n <h1>403 - File ", sizeof("<html>\n <head>\n <title>Access
Denied</title>\n </head>\n <body>\n <h1>403 - File ") - 1);
+ PHPWRITE(entry, entry_len);
+ PHPWRITE(" Access Denied</h1>\n </body>\n</html>", sizeof(" Access
Denied</h1>\n </body>\n</html>") - 1);
+}
+
+static void phar_do_404(char *fname, int fname_len, char *f404, int f404_len,
char *entry, int entry_len TSRMLS_DC)
{
int hi;
phar_entry_data *phar;
@@ -339,7 +353,7 @@
}
goto nofile;
}
- hi = phar_file_action(phar, "text/html", PHAR_MIME_PHP, f404,
f404_len, fname, fname_len, NULL, 0 TSRMLS_CC);
+ hi = phar_file_action(phar, "text/html", PHAR_MIME_PHP, f404,
f404_len, fname, fname_len, NULL, 0, NULL, 0 TSRMLS_CC);
} else {
sapi_header_line ctr = {0};
nofile:
@@ -348,13 +362,54 @@
ctr.line = "HTTP/1.0 404 Not Found";
sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC);
sapi_send_headers(TSRMLS_C);
- PHPWRITE("<html>\n <head>\n <title>File Not Found<title>\n
</head>\n <body>\n <h1>404 - File ", sizeof("<html>\n <head>\n <title>File
Not Found<title>\n </head>\n <body>\n <h1>404 - File ") - 1);
+ PHPWRITE("<html>\n <head>\n <title>File Not Found</title>\n
</head>\n <body>\n <h1>404 - File ", sizeof("<html>\n <head>\n <title>File
Not Found</title>\n </head>\n <body>\n <h1>404 - File ") - 1);
PHPWRITE(entry, entry_len);
PHPWRITE(" Not Found</h1>\n </body>\n</html>", sizeof(" Not
Found</h1>\n </body>\n</html>") - 1);
}
}
-/* {{{ proto void Phar::webPhar([string alias, [string index, [string f404,
[array mimetypes, [array rewrites]]]]])
+static void phar_postprocess_ru_web(char *fname, int fname_len, char **entry,
+ int *entry_len, char **ru, int *ru_len
TSRMLS_DC)
+{
+ char *e = *entry + 1, *u = NULL, *saveu = NULL;
+ int e_len = *entry_len - 1, u_len = 0;
+ phar_archive_data **pphar;
+
+ /* we already know we can retrieve the phar if we reach here */
+ zend_hash_find(&(PHAR_GLOBALS->phar_fname_map), fname, fname_len, (void
**) &pphar);
+
+ do {
+ if (zend_hash_exists(&((*pphar)->manifest), e, e_len)) {
+ if (u) {
+ u[0] = '/';
+ *ru = estrndup(u, u_len+1);
+ u_len++;
+ u[0] = '\0';
+ } else {
+ *ru = NULL;
+ }
+ *ru_len = u_len;
+ *entry_len = e_len + 1;
+ return;
+ }
+ if (u) {
+ u[0] = '/';
+ saveu = u;
+ }
+ u = strrchr(e, '/');
+ if (!u) {
+ if (saveu) {
+ saveu[0] = '/';
+ }
+ return;
+ }
+ u[0] = '\0';
+ u_len = strlen(u + 1);
+ e_len -= u_len + 1;
+ } while (1);
+}
+
+/* {{{ proto void Phar::webPhar([string alias, [string index, [string f404,
[array mimetypes, [callback rewrites]]]]])
* mapPhar for web-based phars. Reads the currently executed file (a phar)
* and registers its manifest. When executed in the CLI or CGI command-line
sapi,
* this works exactly like mapPhar(). When executed by a web-based sapi, this
@@ -365,15 +420,14 @@
{
HashTable mimetypes;
phar_mime_type mime;
- zval *mimeoverride = NULL, *rewrites = NULL;
- char *alias = NULL, *error, *plain_map, *index_php, *f404 = NULL;
- int alias_len = 0, ret, f404_len = 0, free_pathinfo = 0;
+ zval *mimeoverride = NULL, *rewrite = NULL;
+ char *alias = NULL, *error, *plain_map, *index_php, *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;
int fname_len, entry_len, code, index_php_len = 0;
phar_entry_data *phar;
- zval **fd_ptr;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!s!saa",
&alias, &alias_len, &index_php, &index_php_len, &f404, &f404_len,
&mimeoverride, &rewrites) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!s!saz",
&alias, &alias_len, &index_php, &index_php_len, &f404, &f404_len,
&mimeoverride, &rewrite) == FAILURE) {
return;
}
@@ -435,23 +489,92 @@
entry_len = 0;
}
pt = estrndup(testit, (pt - testit) + (fname_len - (basename -
fname)));
- goto skip_entry_dupe;
} else {
path_info = SG(request_info).request_uri;
- }
- if (!(pt = strstr(path_info, basename))) {
- /* this can happen with rewrite rules - and we have no idea
what to do then, so return */
- return;
+ if (!(pt = strstr(path_info, basename))) {
+ /* this can happen with rewrite rules - and we have no
idea what to do then, so return */
+ return;
+ }
+ entry_len = strlen(path_info);
+
+ entry_len -= (pt - path_info) + (fname_len - (basename -
fname));
+ entry = estrndup(pt + (fname_len - (basename - fname)),
entry_len);
+
+ pt = estrndup(path_info, (pt - path_info) + (fname_len -
(basename - fname)));
}
- entry_len = strlen(path_info);
- entry_len -= (pt - path_info) + (fname_len - (basename - fname));
- entry = estrndup(pt + (fname_len - (basename - fname)), entry_len);
+ if (rewrite) {
+ zend_fcall_info fci;
+ zend_fcall_info_cache fcc;
+ zval *params, *retval_ptr, **zp[1];
- pt = estrndup(path_info, (pt - path_info) + (fname_len - (basename -
fname)));
+ MAKE_STD_ZVAL(params);
+ ZVAL_STRINGL(params, entry, entry_len, 1);
+ zp[0] = ¶ms;
-skip_entry_dupe:
+ if (FAILURE == zend_fcall_info_init(rewrite, &fci, &fcc, NULL
TSRMLS_CC)) {
+ zend_throw_exception_ex(spl_ce_RuntimeException, 0
TSRMLS_CC, "phar error: invalid rewrite callback");
+ if (free_pathinfo) {
+ efree(path_info);
+ }
+ return;
+ }
+
+ fci.param_count = 1;
+ fci.params = zp;
+#if PHP_VERSION_ID < 50300
+ params->refcount++;
+#else
+ Z_ADDREF_P(params);
+#endif
+ fci.retval_ptr_ptr = &retval_ptr;
+
+ if (FAILURE == zend_call_function(&fci, &fcc TSRMLS_CC)) {
+ if (!EG(exception)) {
+
zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "phar error:
failed to call rewrite callback");
+ }
+ if (free_pathinfo) {
+ efree(path_info);
+ }
+ return;
+ }
+ if (!retval_ptr) {
+ if (free_pathinfo) {
+ efree(path_info);
+ }
+ zend_throw_exception_ex(spl_ce_RuntimeException, 0
TSRMLS_CC, "phar error: rewrite callback must return a string or false");
+ return;
+ }
+ switch (Z_TYPE_P(retval_ptr)) {
+ case IS_STRING :
+ efree(entry);
+ entry = Z_STRVAL_P(retval_ptr);
+ entry_len = Z_STRLEN_P(retval_ptr);
+ break;
+ case IS_BOOL :
+ phar_do_403(entry, entry_len TSRMLS_CC);
+ if (free_pathinfo) {
+ efree(path_info);
+ }
+ zend_bailout();
+ return;
+ case IS_NULL :
+ /* just use what we have now */
+ break;
+ default:
+ efree(retval_ptr);
+ if (free_pathinfo) {
+ efree(path_info);
+ }
+
zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "phar error:
rewrite callback must return a string or false");
+ return;
+ }
+ }
+
+ if (entry_len) {
+ phar_postprocess_ru_web(fname, fname_len, &entry, &entry_len,
&ru, &ru_len TSRMLS_CC);
+ }
if (!entry_len || (entry_len == 1 && entry[0] == '/')) {
efree(entry);
/* direct request */
@@ -507,24 +630,6 @@
}
}
- if (rewrites) {
- /* check for "rewrite" urls */
- if (SUCCESS == zend_hash_find(Z_ARRVAL_P(rewrites), entry,
entry_len+1, (void **) &fd_ptr)) {
- if (IS_STRING != Z_TYPE_PP(fd_ptr)) {
-#ifdef PHP_WIN32
- efree(fname);
-#endif
-
zend_throw_exception_ex(spl_ce_UnexpectedValueException, 0 TSRMLS_CC, "phar
rewrite value for \"%s\" was not a string", entry);
- return;
- }
- if (entry != index_php) {
- efree(entry);
- }
- entry = Z_STRVAL_PP(fd_ptr);
- entry_len = Z_STRLEN_PP(fd_ptr);
- }
- }
-
if (FAILURE == phar_get_entry_data(&phar, fname, fname_len, entry,
entry_len, "r", 0, &error TSRMLS_CC)) {
phar_do_404(fname, fname_len, f404, f404_len, entry, entry_len
TSRMLS_CC);
#ifdef PHP_WIN32
@@ -649,7 +754,7 @@
no_mimes:
code = phar_file_type(&mimetypes, entry, &mime_type TSRMLS_CC);
- ret = phar_file_action(phar, mime_type, code, entry, entry_len, fname,
fname_len, pt, strlen(pt) TSRMLS_CC);
+ ret = phar_file_action(phar, mime_type, code, entry, entry_len, fname,
fname_len, pt, strlen(pt), ru, ru_len TSRMLS_CC);
zend_hash_destroy(&mimetypes);
#ifdef PHP_WIN32
efree(fname);
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/frontcontroller10.phpt?r1=1.2&r2=1.3&diff_format=u
Index: pecl/phar/tests/frontcontroller10.phpt
diff -u pecl/phar/tests/frontcontroller10.phpt:1.2
pecl/phar/tests/frontcontroller10.phpt:1.3
--- pecl/phar/tests/frontcontroller10.phpt:1.2 Thu Feb 7 04:24:56 2008
+++ pecl/phar/tests/frontcontroller10.phpt Thu Feb 7 23:42:02 2008
@@ -10,9 +10,13 @@
frontcontroller4.phar
--EXPECTHEADERS--
Content-type: text/html
---EXPECTF--
-Fatal error: Uncaught exception 'UnexpectedValueException' with message 'phar
rewrite value for "/hi" was not a string' in %sfrontcontroller10.php:2
-Stack trace:
-#0 %sfrontcontroller10.php(2): Phar::webPhar('whatever', 'index.php', '',
Array, Array)
-#1 {main}
- thrown in %sfrontcontroller10.php on line 2
\ No newline at end of file
+Status: 403 Access Denied
+--EXPECT--
+<html>
+ <head>
+ <title>Access Denied</title>
+ </head>
+ <body>
+ <h1>403 - File /hi Access Denied</h1>
+ </body>
+</html>
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/frontcontroller21.phpt?r1=1.4&r2=1.5&diff_format=u
Index: pecl/phar/tests/frontcontroller21.phpt
diff -u pecl/phar/tests/frontcontroller21.phpt:1.4
pecl/phar/tests/frontcontroller21.phpt:1.5
--- pecl/phar/tests/frontcontroller21.phpt:1.4 Thu Feb 7 04:24:56 2008
+++ pecl/phar/tests/frontcontroller21.phpt Thu Feb 7 23:42:02 2008
@@ -13,7 +13,7 @@
Content-type: text/html
--EXPECTF--
string(10) "/index.php"
-string(%d) "phar://%sfrontcontroller21.php/index.php"
+string(10) "/index.php"
string(%d) "phar://%sfrontcontroller21.php/index.php"
string(18) "/index.php?test=hi"
string(32) "/frontcontroller21.php/index.php"
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/frontcontroller3.phar?r1=1.3&r2=1.4&diff_format=u
Index: pecl/phar/tests/frontcontroller3.phar
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/frontcontroller3.phar.inc?r1=1.2&r2=1.3&diff_format=u
Index: pecl/phar/tests/frontcontroller3.phar.inc
diff -u pecl/phar/tests/frontcontroller3.phar.inc:1.2
pecl/phar/tests/frontcontroller3.phar.inc:1.3
--- pecl/phar/tests/frontcontroller3.phar.inc:1.2 Sat Jan 5 04:30:29 2008
+++ pecl/phar/tests/frontcontroller3.phar.inc Thu Feb 7 23:42:02 2008
@@ -5,7 +5,12 @@
$a['a.jpg'] = 'hio';
$a['a.phps'] = '<?php function hio(){}';
$a->setStub('<?php
-Phar::webPhar("whatever", "index.php", null, array(), array("/hi" =>
"a.phps"));
+function s($a)
+{
+ static $b = array("/hi" => "a.phps");
+ if (isset($b[$a])) return $b[$a];
+}
+Phar::webPhar("whatever", "/index.php", null, array(), "s");
echo "oops did not run\n";
var_dump($_ENV, $_SERVER);
__HALT_COMPILER();');
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/frontcontroller4.phar?r1=1.1&r2=1.2&diff_format=u
Index: pecl/phar/tests/frontcontroller4.phar
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/frontcontroller4.phar.inc?r1=1.1&r2=1.2&diff_format=u
Index: pecl/phar/tests/frontcontroller4.phar.inc
diff -u pecl/phar/tests/frontcontroller4.phar.inc:1.1
pecl/phar/tests/frontcontroller4.phar.inc:1.2
--- pecl/phar/tests/frontcontroller4.phar.inc:1.1 Sat Jan 5 05:12:43 2008
+++ pecl/phar/tests/frontcontroller4.phar.inc Thu Feb 7 23:42:02 2008
@@ -5,7 +5,13 @@
$a['a.jpg'] = 'hio';
$a['a.phps'] = '<?php function hio(){}';
$a->setStub('<?php
-Phar::webPhar("whatever", "index.php", null, array(), array("/hi" => true));
+function s($a)
+{
+ static $b = array("/hi" => false);
+ if (isset($b[$a])) return $b[$a];
+ return $a;
+}
+Phar::webPhar("whatever", "index.php", null, array(), "s");
echo "oops did not run\n";
var_dump($_ENV, $_SERVER);
__HALT_COMPILER();');
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/frontcontroller6.phpt?r1=1.2&r2=1.3&diff_format=u
Index: pecl/phar/tests/frontcontroller6.phpt
diff -u pecl/phar/tests/frontcontroller6.phpt:1.2
pecl/phar/tests/frontcontroller6.phpt:1.3
--- pecl/phar/tests/frontcontroller6.phpt:1.2 Thu Feb 7 04:24:57 2008
+++ pecl/phar/tests/frontcontroller6.phpt Thu Feb 7 23:42:02 2008
@@ -13,7 +13,7 @@
--EXPECT--
<html>
<head>
- <title>File Not Found<title>
+ <title>File Not Found</title>
</head>
<body>
<h1>404 - File /notfound.php Not Found</h1>
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/frontcontroller8.phpt?r1=1.3&r2=1.4&diff_format=u
Index: pecl/phar/tests/frontcontroller8.phpt
diff -u pecl/phar/tests/frontcontroller8.phpt:1.3
pecl/phar/tests/frontcontroller8.phpt:1.4
--- pecl/phar/tests/frontcontroller8.phpt:1.3 Thu Feb 7 04:24:57 2008
+++ pecl/phar/tests/frontcontroller8.phpt Thu Feb 7 23:42:02 2008
@@ -13,9 +13,9 @@
--EXPECT--
<html>
<head>
- <title>File Not Found<title>
+ <title>File Not Found</title>
</head>
<body>
- <h1>404 - File index.php Not Found</h1>
+ <h1>404 - File /index.php Not Found</h1>
</body>
</html>
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/withphar_web.phpt?r1=1.1&r2=1.2&diff_format=u
Index: pecl/phar/tests/withphar_web.phpt
diff -u pecl/phar/tests/withphar_web.phpt:1.1
pecl/phar/tests/withphar_web.phpt:1.2
--- pecl/phar/tests/withphar_web.phpt:1.1 Sun Jan 20 00:49:44 2008
+++ pecl/phar/tests/withphar_web.phpt Thu Feb 7 23:42:02 2008
@@ -3,8 +3,9 @@
--SKIPIF--
<?php if (!extension_loaded("phar")) die("skip");?>
--ENV--
-SCRIPT_NAME=/withphar_web.php/web.php
+SCRIPT_NAME=/withphar_web.php
REQUEST_URI=/withphar_web.php/web.php
+PATH_INFO=/web.php
--FILE_EXTERNAL--
nophar.phar
--EXPECTHEADERS--
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/tar/frontcontroller10.phar.phpt?r1=1.3&r2=1.4&diff_format=u
Index: pecl/phar/tests/tar/frontcontroller10.phar.phpt
diff -u pecl/phar/tests/tar/frontcontroller10.phar.phpt:1.3
pecl/phar/tests/tar/frontcontroller10.phar.phpt:1.4
--- pecl/phar/tests/tar/frontcontroller10.phar.phpt:1.3 Thu Feb 7 04:24:57 2008
+++ pecl/phar/tests/tar/frontcontroller10.phar.phpt Thu Feb 7 23:42:02 2008
@@ -10,9 +10,13 @@
frontcontroller4.phar.tar
--EXPECTHEADERS--
Content-type: text/html
---EXPECTF--
-Fatal error: Uncaught exception 'UnexpectedValueException' with message 'phar
rewrite value for "/hi" was not a string' in %sfrontcontroller10.phar.php:2
-Stack trace:
-#0 %sfrontcontroller10.phar.php(2): Phar::webPhar('whatever', 'index.php', '',
Array, Array)
-#1 {main}
- thrown in %sfrontcontroller10.phar.php on line 2
\ No newline at end of file
+Status: 403 Access Denied
+--EXPECT--
+<html>
+ <head>
+ <title>Access Denied</title>
+ </head>
+ <body>
+ <h1>403 - File /hi Access Denied</h1>
+ </body>
+</html>
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/tar/frontcontroller21.phar.phpt?r1=1.3&r2=1.4&diff_format=u
Index: pecl/phar/tests/tar/frontcontroller21.phar.phpt
diff -u pecl/phar/tests/tar/frontcontroller21.phar.phpt:1.3
pecl/phar/tests/tar/frontcontroller21.phar.phpt:1.4
--- pecl/phar/tests/tar/frontcontroller21.phar.phpt:1.3 Thu Feb 7 04:24:57 2008
+++ pecl/phar/tests/tar/frontcontroller21.phar.phpt Thu Feb 7 23:42:02 2008
@@ -13,7 +13,7 @@
Content-type: text/html
--EXPECTF--
string(10) "/index.php"
-string(%d) "phar://%sfrontcontroller21.phar.php/index.php"
+string(10) "/index.php"
string(%d) "phar://%sfrontcontroller21.phar.php/index.php"
string(18) "/index.php?test=hi"
string(37) "/frontcontroller21.phar.php/index.php"
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/tar/frontcontroller3.phar.inc?r1=1.1&r2=1.2&diff_format=u
Index: pecl/phar/tests/tar/frontcontroller3.phar.inc
diff -u pecl/phar/tests/tar/frontcontroller3.phar.inc:1.1
pecl/phar/tests/tar/frontcontroller3.phar.inc:1.2
--- pecl/phar/tests/tar/frontcontroller3.phar.inc:1.1 Mon Jan 7 05:35:16 2008
+++ pecl/phar/tests/tar/frontcontroller3.phar.inc Thu Feb 7 23:42:02 2008
@@ -5,7 +5,12 @@
$a['a.jpg'] = 'hio';
$a['a.phps'] = '<?php function hio(){}';
$a->setStub('<?php
-Phar::webPhar("whatever", "index.php", null, array(), array("/hi" =>
"a.phps"));
+function s($a)
+{
+ static $b = array("/hi" => "a.phps");
+ if (isset($b[$a])) return $b[$a];
+}
+Phar::webPhar("whatever", "/index.php", null, array(), "s");
echo "oops did not run\n";
var_dump($_ENV, $_SERVER);
__HALT_COMPILER();');
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/tar/frontcontroller3.phar.tar?r1=1.1&r2=1.2&diff_format=u
Index: pecl/phar/tests/tar/frontcontroller3.phar.tar
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/tar/frontcontroller4.phar.inc?r1=1.1&r2=1.2&diff_format=u
Index: pecl/phar/tests/tar/frontcontroller4.phar.inc
diff -u pecl/phar/tests/tar/frontcontroller4.phar.inc:1.1
pecl/phar/tests/tar/frontcontroller4.phar.inc:1.2
--- pecl/phar/tests/tar/frontcontroller4.phar.inc:1.1 Mon Jan 7 05:35:16 2008
+++ pecl/phar/tests/tar/frontcontroller4.phar.inc Thu Feb 7 23:42:02 2008
@@ -5,7 +5,13 @@
$a['a.jpg'] = 'hio';
$a['a.phps'] = '<?php function hio(){}';
$a->setStub('<?php
-Phar::webPhar("whatever", "index.php", null, array(), array("/hi" => true));
+function s($a)
+{
+ static $b = array("/hi" => false);
+ if (isset($b[$a])) return $b[$a];
+ return $a;
+}
+Phar::webPhar("whatever", "index.php", null, array(), "s");
echo "oops did not run\n";
var_dump($_ENV, $_SERVER);
__HALT_COMPILER();');
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/tar/frontcontroller4.phar.tar?r1=1.1&r2=1.2&diff_format=u
Index: pecl/phar/tests/tar/frontcontroller4.phar.tar
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/tar/frontcontroller6.phar.phpt?r1=1.2&r2=1.3&diff_format=u
Index: pecl/phar/tests/tar/frontcontroller6.phar.phpt
diff -u pecl/phar/tests/tar/frontcontroller6.phar.phpt:1.2
pecl/phar/tests/tar/frontcontroller6.phar.phpt:1.3
--- pecl/phar/tests/tar/frontcontroller6.phar.phpt:1.2 Thu Feb 7 04:24:57 2008
+++ pecl/phar/tests/tar/frontcontroller6.phar.phpt Thu Feb 7 23:42:02 2008
@@ -13,7 +13,7 @@
--EXPECT--
<html>
<head>
- <title>File Not Found<title>
+ <title>File Not Found</title>
</head>
<body>
<h1>404 - File /notfound.php Not Found</h1>
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/tar/frontcontroller8.phar.phpt?r1=1.2&r2=1.3&diff_format=u
Index: pecl/phar/tests/tar/frontcontroller8.phar.phpt
diff -u pecl/phar/tests/tar/frontcontroller8.phar.phpt:1.2
pecl/phar/tests/tar/frontcontroller8.phar.phpt:1.3
--- pecl/phar/tests/tar/frontcontroller8.phar.phpt:1.2 Thu Feb 7 04:24:57 2008
+++ pecl/phar/tests/tar/frontcontroller8.phar.phpt Thu Feb 7 23:42:02 2008
@@ -13,9 +13,9 @@
--EXPECT--
<html>
<head>
- <title>File Not Found<title>
+ <title>File Not Found</title>
</head>
<body>
- <h1>404 - File index.php Not Found</h1>
+ <h1>404 - File /index.php Not Found</h1>
</body>
</html>
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/zip/frontcontroller10.phar.phpt?r1=1.4&r2=1.5&diff_format=u
Index: pecl/phar/tests/zip/frontcontroller10.phar.phpt
diff -u pecl/phar/tests/zip/frontcontroller10.phar.phpt:1.4
pecl/phar/tests/zip/frontcontroller10.phar.phpt:1.5
--- pecl/phar/tests/zip/frontcontroller10.phar.phpt:1.4 Thu Feb 7 04:24:57 2008
+++ pecl/phar/tests/zip/frontcontroller10.phar.phpt Thu Feb 7 23:42:02 2008
@@ -10,9 +10,13 @@
frontcontroller4.phar.zip
--EXPECTHEADERS--
Content-type: text/html
---EXPECTF--
-Fatal error: Uncaught exception 'UnexpectedValueException' with message 'phar
rewrite value for "/hi" was not a string' in %sfrontcontroller10.phar.php:2
-Stack trace:
-#0 %sfrontcontroller10.phar.php(2): Phar::webPhar('whatever', 'index.php', '',
Array, Array)
-#1 {main}
- thrown in %sfrontcontroller10.phar.php on line 2
\ No newline at end of file
+Status: 403 Access Denied
+--EXPECT--
+<html>
+ <head>
+ <title>Access Denied</title>
+ </head>
+ <body>
+ <h1>403 - File /hi Access Denied</h1>
+ </body>
+</html>
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/zip/frontcontroller21.phar.phpt?r1=1.5&r2=1.6&diff_format=u
Index: pecl/phar/tests/zip/frontcontroller21.phar.phpt
diff -u pecl/phar/tests/zip/frontcontroller21.phar.phpt:1.5
pecl/phar/tests/zip/frontcontroller21.phar.phpt:1.6
--- pecl/phar/tests/zip/frontcontroller21.phar.phpt:1.5 Thu Feb 7 04:24:57 2008
+++ pecl/phar/tests/zip/frontcontroller21.phar.phpt Thu Feb 7 23:42:02 2008
@@ -13,7 +13,7 @@
Content-type: text/html
--EXPECTF--
string(10) "/index.php"
-string(%d) "phar://%sfrontcontroller21.phar.php/index.php"
+string(10) "/index.php"
string(%d) "phar://%sfrontcontroller21.phar.php/index.php"
string(18) "/index.php?test=hi"
string(37) "/frontcontroller21.phar.php/index.php"
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/zip/frontcontroller3.phar.inc?r1=1.1&r2=1.2&diff_format=u
Index: pecl/phar/tests/zip/frontcontroller3.phar.inc
diff -u pecl/phar/tests/zip/frontcontroller3.phar.inc:1.1
pecl/phar/tests/zip/frontcontroller3.phar.inc:1.2
--- pecl/phar/tests/zip/frontcontroller3.phar.inc:1.1 Tue Jan 8 07:08:45 2008
+++ pecl/phar/tests/zip/frontcontroller3.phar.inc Thu Feb 7 23:42:02 2008
@@ -5,7 +5,12 @@
$a['a.jpg'] = 'hio';
$a['a.phps'] = '<?php function hio(){}';
$a->setStub('<?php
-Phar::webPhar("whatever", "index.php", null, array(), array("/hi" =>
"a.phps"));
+function s($a)
+{
+ static $b = array("/hi" => "a.phps");
+ if (isset($b[$a])) return $b[$a];
+}
+Phar::webPhar("whatever", "/index.php", null, array(), "s");
echo "oops did not run\n";
var_dump($_ENV, $_SERVER);
__HALT_COMPILER();');
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/zip/frontcontroller3.phar.zip?r1=1.1&r2=1.2&diff_format=u
Index: pecl/phar/tests/zip/frontcontroller3.phar.zip
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/zip/frontcontroller4.phar.inc?r1=1.1&r2=1.2&diff_format=u
Index: pecl/phar/tests/zip/frontcontroller4.phar.inc
diff -u pecl/phar/tests/zip/frontcontroller4.phar.inc:1.1
pecl/phar/tests/zip/frontcontroller4.phar.inc:1.2
--- pecl/phar/tests/zip/frontcontroller4.phar.inc:1.1 Tue Jan 8 07:08:45 2008
+++ pecl/phar/tests/zip/frontcontroller4.phar.inc Thu Feb 7 23:42:02 2008
@@ -5,7 +5,13 @@
$a['a.jpg'] = 'hio';
$a['a.phps'] = '<?php function hio(){}';
$a->setStub('<?php
-Phar::webPhar("whatever", "index.php", null, array(), array("/hi" => true));
+function s($a)
+{
+ static $b = array("/hi" => false);
+ if (isset($b[$a])) return $b[$a];
+ return $a;
+}
+Phar::webPhar("whatever", "index.php", null, array(), "s");
echo "oops did not run\n";
var_dump($_ENV, $_SERVER);
__HALT_COMPILER();');
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/zip/frontcontroller4.phar.zip?r1=1.1&r2=1.2&diff_format=u
Index: pecl/phar/tests/zip/frontcontroller4.phar.zip
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/zip/frontcontroller6.phar.phpt?r1=1.4&r2=1.5&diff_format=u
Index: pecl/phar/tests/zip/frontcontroller6.phar.phpt
diff -u pecl/phar/tests/zip/frontcontroller6.phar.phpt:1.4
pecl/phar/tests/zip/frontcontroller6.phar.phpt:1.5
--- pecl/phar/tests/zip/frontcontroller6.phar.phpt:1.4 Thu Feb 7 04:24:57 2008
+++ pecl/phar/tests/zip/frontcontroller6.phar.phpt Thu Feb 7 23:42:02 2008
@@ -13,7 +13,7 @@
--EXPECT--
<html>
<head>
- <title>File Not Found<title>
+ <title>File Not Found</title>
</head>
<body>
<h1>404 - File /notfound.php Not Found</h1>
http://cvs.php.net/viewvc.cgi/pecl/phar/tests/zip/frontcontroller8.phar.phpt?r1=1.4&r2=1.5&diff_format=u
Index: pecl/phar/tests/zip/frontcontroller8.phar.phpt
diff -u pecl/phar/tests/zip/frontcontroller8.phar.phpt:1.4
pecl/phar/tests/zip/frontcontroller8.phar.phpt:1.5
--- pecl/phar/tests/zip/frontcontroller8.phar.phpt:1.4 Thu Feb 7 04:24:57 2008
+++ pecl/phar/tests/zip/frontcontroller8.phar.phpt Thu Feb 7 23:42:02 2008
@@ -13,9 +13,9 @@
--EXPECT--
<html>
<head>
- <title>File Not Found<title>
+ <title>File Not Found</title>
</head>
<body>
- <h1>404 - File index.php Not Found</h1>
+ <h1>404 - File /index.php Not Found</h1>
</body>
</html>
\ No newline at end of file