mirror of
https://github.com/php/php-src.git
synced 2026-04-27 18:23:26 +02:00
fix front controller tests (requires patch to run-tests.php posted to internals a little while ago)
allow phars to have extension .php as last resort fix phar-based phars for MIME_OTHER type
This commit is contained in:
@@ -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, "/");
|
||||
|
||||
@@ -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);
|
||||
|
||||
Binary file not shown.
@@ -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();');
|
||||
?>
|
||||
@@ -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
|
||||
|
||||
@@ -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--
|
||||
|
||||
@@ -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--
|
||||
|
||||
Reference in New Issue
Block a user