]> granicus.if.org Git - php/commitdiff
fix front controller tests (requires patch to run-tests.php posted to internals a...
authorGreg Beaver <cellog@php.net>
Sat, 5 Jan 2008 03:41:43 +0000 (03:41 +0000)
committerGreg Beaver <cellog@php.net>
Sat, 5 Jan 2008 03:41:43 +0000 (03:41 +0000)
allow phars to have extension .php as last resort
fix phar-based phars for MIME_OTHER type

ext/phar/phar.c
ext/phar/phar_object.c
ext/phar/tests/frontcontroller.phar [new file with mode: 0644]
ext/phar/tests/frontcontroller.phar.inc [new file with mode: 0644]
ext/phar/tests/frontcontroller1.phpt
ext/phar/tests/frontcontroller2.phpt
ext/phar/tests/frontcontroller3.phpt

index f3f7396e287c6b7813618849653694e52293f57b..5c9e95be20b8177ab129edfce0e6fb96c0956239 100644 (file)
@@ -1990,6 +1990,9 @@ int phar_detect_phar_fname_ext(const char *filename, int check_length, char **ex
        } else if ((pos_p = strstr(filename, ".phar")) != NULL) {
                *ext_str = pos_p;
                *ext_len = 5;
+       } else if ((pos_p = strstr(filename, ".php")) != NULL) {
+               *ext_str = pos_p;
+               *ext_len = 4;
        } else {
                /* We have an alias with no extension, so locate the first / and fail */
                *ext_str = strstr(filename, "/");
index 0bc123c43555f926be6a89ce4c54da81cd1d33c1..487f01c3b5b7ac6d4d0196aeb16d67610731e5b8 100755 (executable)
@@ -222,6 +222,9 @@ static int phar_file_action(phar_entry_data *phar, char *mime_type, int code, ch
                                phar->fp = phar->internal_file->fp;
                                if (phar->internal_file->fp == phar->phar->fp) {
                                        phar->zero = phar->internal_file->offset_within_phar;
+                                       if (!phar->is_tar && !phar->is_zip) {
+                                               phar->zero += phar->phar->internal_file_start;
+                                       }
                                }
                        }
                        php_stream_seek(phar->fp, phar->zero, SEEK_SET);
diff --git a/ext/phar/tests/frontcontroller.phar b/ext/phar/tests/frontcontroller.phar
new file mode 100644 (file)
index 0000000..8790f7b
Binary files /dev/null and b/ext/phar/tests/frontcontroller.phar differ
diff --git a/ext/phar/tests/frontcontroller.phar.inc b/ext/phar/tests/frontcontroller.phar.inc
new file mode 100644 (file)
index 0000000..9899097
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+@unlink(dirname(__FILE__) . '/frontcontroller.phar');
+$a = new Phar(dirname(__FILE__) . '/frontcontroller.phar');
+$a['a.php'] = 'hio';
+$a['a.jpg'] = 'hio';
+$a['a.phps'] = '<?php function hio(){}';
+$a->setStub('<?php
+Phar::webPhar();
+echo "oops did not run\n";
+var_dump($_ENV, $_SERVER);
+__HALT_COMPILER();');
+?>
index 0cff6e6f3d179497bbdee1a454c77835b50e1b2e..ebe5c35b5b4d8ce03fadabedc74a18de3fc0cd80 100644 (file)
@@ -2,32 +2,11 @@
 Phar front controller
 --SKIPIF--
 <?php if (!extension_loaded("phar")) die("skip"); ?>
---INI--
-phar.require_hash=0
-phar.readonly=0
 --ENV--
-REQUEST_URI=/frontcontroller1.phar.php/a.jpg
---FILE--
-<?php
-$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
-$pname = 'phar://' . $fname;
-
-$a = new Phar($fname);
-$a['a.jpg'] = 'hio';
-$a->setStub('<?php
-Phar::webPhar();
-__HALT_COMPILER();');
-
-$_SERVER['REQUEST_URI'] = '/' . basename(__FILE__, '.php') . '.phar.php/a.jpg';
-include $fname;
-?>
-===DONE===
---CLEAN--
-<?php 
-unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php');
-unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phartmp.php');
-__HALT_COMPILER();
-?>
+SCRIPT_NAME=/frontcontroller1.php/a.jpg
+REQUEST_URI=/frontcontroller1.php/a.jpg
+--FILE_EXTERNAL--
+frontcontroller.phar
 --EXPECTHEADERS--
 Content-type: image/jpeg
 Content-length: 3
index d1449a2f49437af792ecb7e1456f69e5ef3c3726..69573f95d3fe1fdfcff120bbb69ca36d6c560e53 100644 (file)
@@ -1,31 +1,12 @@
 --TEST--
-Phar front controller php
+Phar front controller PHP test
 --SKIPIF--
 <?php if (!extension_loaded("phar")) die("skip"); ?>
---INI--
-phar.require_hash=0
-phar.readonly=0
---FILE--
-<?php
-$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
-$pname = 'phar://' . $fname;
-
-$a = new Phar($fname);
-$a['a.php'] = 'hio';
-$a->setStub('<?php
-Phar::webPhar();
-__HALT_COMPILER();');
-
-$_SERVER['REQUEST_URI'] = '/' . basename(__FILE__, '.php') . '.phar.php/a.php';
-include $fname;
-?>
-===DONE===
---CLEAN--
-<?php 
-unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php');
-unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phartmp.php');
-__HALT_COMPILER();
-?>
+--ENV--
+SCRIPT_NAME=/frontcontroller2.php/a.php
+REQUEST_URI=/frontcontroller2.php/a.php
+--FILE_EXTERNAL--
+frontcontroller.phar
 --EXPECTHEADERS--
 Content-type: text/html
 --EXPECT--
index 99bba11660d94b6f03afec20326744238d49eaf2..932dd0d8c07396e8cdb317db64d7f571b068433b 100644 (file)
@@ -2,30 +2,11 @@
 Phar front controller phps
 --SKIPIF--
 <?php if (!extension_loaded("phar")) die("skip"); ?>
---INI--
-phar.require_hash=0
-phar.readonly=0
---FILE--
-<?php
-$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
-$pname = 'phar://' . $fname;
-
-$a = new Phar($fname);
-$a['a.phps'] = '<?php function hio(){}';
-$a->setStub('<?php
-Phar::webPhar();
-__HALT_COMPILER();');
-
-$_SERVER['REQUEST_URI'] = '/' . basename(__FILE__, '.php') . '.phar.php/a.phps';
-include $fname;
-?>
-===DONE===
---CLEAN--
-<?php 
-unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php');
-unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phartmp.php');
-__HALT_COMPILER();
-?>
+--ENV--
+SCRIPT_NAME=/frontcontroller3.php/a.phps
+REQUEST_URI=/frontcontroller3.php/a.phps
+--FILE_EXTERNAL--
+frontcontroller.phar
 --EXPECTHEADERS--
 Content-type: text/html
 --EXPECT--