--TEST-- Phar: create with illegal path --SKIPIF-- <?php if (!extension_loaded("phar")) die("skip"); ?> <?php if (!extension_loaded("spl")) die("skip SPL not available"); ?> --INI-- phar.readonly=0 phar.require_hash=1 --FILE-- <?php $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php'; $pname = 'phar://' . $fname; @unlink($fname); file_put_contents($pname . '/a.php?', "query"); file_put_contents($pname . '/b.php?bla', "query"); var_dump(file_get_contents($pname . '/a.php')); var_dump(file_get_contents($pname . '/b.php')); function error_handler($errno, $errmsg) { echo "Error: $errmsg\n"; } set_error_handler('error_handler'); $checks = array('/', '.', '../', 'a/..', 'a/', 'b//a.php'); foreach($checks as $check) { file_put_contents($pname . '/' . $check, "error"); } $phar = new Phar($fname); $checks = array("a\0"); foreach($checks as $check) { try { $phar[$check] = 'error'; } catch(Exception $e) { echo 'Exception: ' . $e->getMessage() . "\n"; } } ?> ===DONE=== --CLEAN-- <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?> --EXPECTF-- string(5) "query" string(5) "query" Error: file_put_contents(phar://%s//): failed to open stream: phar error: file "" in phar "%s" cannot be empty Error: file_put_contents(phar://%s/.): failed to open stream: phar error: file "" in phar "%s" cannot be empty Error: file_put_contents(phar://%s/../): failed to open stream: phar error: file "" in phar "%s" cannot be empty Error: file_put_contents(phar://%s/a/..): failed to open stream: phar error: file "" in phar "%s" cannot be empty Exception: Entry a does not exist and cannot be created: phar error: invalid path "a" contains illegal character ===DONE===