From 08b7b76418b6094b7f6116f35e925a1f4793d3e4 Mon Sep 17 00:00:00 2001 From: Greg Beaver Date: Sat, 5 Jan 2008 03:49:01 +0000 Subject: [PATCH] fix Location header for index if request has a /, 2 new tests, add index.php to frontcontroller phar --- ext/phar/phar_object.c | 9 +++++++-- ext/phar/tests/frontcontroller.phar | Bin 278 -> 331 bytes ext/phar/tests/frontcontroller.phar.inc | 1 + ext/phar/tests/frontcontroller4.phpt | 13 +++++++++++++ ext/phar/tests/frontcontroller5.phpt | 13 +++++++++++++ 5 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 ext/phar/tests/frontcontroller4.phpt create mode 100644 ext/phar/tests/frontcontroller5.phpt diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index 487f01c3b5..bb248514b3 100755 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -432,7 +432,7 @@ PHP_METHOD(Phar, webPhar) zend_bailout(); return; } else { - char *tmp, sa; + char *tmp, sa, *myentry; sapi_header_line ctr = {0}; ctr.response_code = 301; ctr.line_len = sizeof("HTTP/1.1 301 Moved Permanently")+1; @@ -443,7 +443,12 @@ PHP_METHOD(Phar, webPhar) sa = *tmp; *tmp = '\0'; ctr.response_code = 0; - ctr.line_len = spprintf(&(ctr.line), 4096, "Location: %s%s", path_info, entry); + if (entry[0] == '/' && path_info[strlen(path_info)-1] == '/') { + myentry = entry + 1; + } else { + myentry = entry; + } + ctr.line_len = spprintf(&(ctr.line), 4096, "Location: %s%s", path_info, myentry); *tmp = sa; sapi_header_op(SAPI_HEADER_REPLACE, &ctr TSRMLS_CC); sapi_send_headers(TSRMLS_C); diff --git a/ext/phar/tests/frontcontroller.phar b/ext/phar/tests/frontcontroller.phar index 8790f7bc5b5db4bf823ab5ccc26128c3d51a313a..626bf48acf0596c465b08772ececb62bc52409e5 100644 GIT binary patch delta 125 zcmbQnbed^G3hQhJ1_qXinQ}~=e{QqB=GvIO3Tqhy0|WEKOgW~@UnX|SgUD41JeR-Jxr+fMgmW4bCjM5D=`H;v5vU>) Y8NZV&r(Y|O*PipA1rt!--O1Mp0H!$@BLDyZ diff --git a/ext/phar/tests/frontcontroller.phar.inc b/ext/phar/tests/frontcontroller.phar.inc index 989909751e..80d42e886b 100644 --- a/ext/phar/tests/frontcontroller.phar.inc +++ b/ext/phar/tests/frontcontroller.phar.inc @@ -4,6 +4,7 @@ $a = new Phar(dirname(__FILE__) . '/frontcontroller.phar'); $a['a.php'] = 'hio'; $a['a.jpg'] = 'hio'; $a['a.phps'] = 'setStub(' +--ENV-- +SCRIPT_NAME=/frontcontroller4.php +REQUEST_URI=/frontcontroller4.php +--FILE_EXTERNAL-- +frontcontroller.phar +--EXPECTHEADERS-- +Status: 301 Moved Permanently +Location: /frontcontroller4.php/index.php +--EXPECT-- diff --git a/ext/phar/tests/frontcontroller5.phpt b/ext/phar/tests/frontcontroller5.phpt new file mode 100644 index 0000000000..70d985712c --- /dev/null +++ b/ext/phar/tests/frontcontroller5.phpt @@ -0,0 +1,13 @@ +--TEST-- +Phar front controller phps +--SKIPIF-- + +--ENV-- +SCRIPT_NAME=/frontcontroller5.php/ +REQUEST_URI=/frontcontroller5.php/ +--FILE_EXTERNAL-- +frontcontroller.phar +--EXPECTHEADERS-- +Status: 301 Moved Permanently +Location: /frontcontroller5.php/index.php +--EXPECT-- -- 2.50.1