]> granicus.if.org Git - php/blob
19acc3ba99
[php] /
1 --TEST--
2 Phar: test stat function interceptions and is_file/is_link edge cases (PHP 5.3+)
3 --SKIPIF--
4 <?php if (!extension_loaded("phar")) die("skip");?>
5 --INI--
6 phar.readonly=0
7 phar.require_hash=0
8 --FILE--
9 <?php
10 Phar::interceptFileFuncs();
11 var_dump(is_file(__FILE__));
12
13 $fname2 = __DIR__ . '/' . basename(__FILE__, '.php') . '.tar';
14 $fname3 = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar.tar';
15 copy(__DIR__ . '/tar/files/links.tar', $fname2);
16 $a = new PharData($fname2);
17 $b = $a->convertToExecutable(Phar::TAR, Phar::NONE, '.phar.tar');
18 unset($a);
19 Phar::unlinkArchive($fname2);
20 $b['foo/stat.php'] = '<?php
21 echo "is_link\n";
22 var_dump(is_link("./stat.php"),is_file("./stat.php"), is_link("./oops"), is_file("./oops"));
23 var_dump(is_link("testit/link"), filetype("testit/link"), filetype("testit"), is_file("testit/link"));
24 echo "not found\n";
25 var_dump(is_link("notfound"));
26 echo "dir\n";
27 var_dump(is_dir("./bar"), is_file("foo/bar/blah"));
28 ?>';
29 $b->addEmptyDir('foo/bar/blah');
30 $b->setStub('<?php
31 include "phar://" . __FILE__ . "/foo/stat.php";
32 __HALT_COMPILER();');
33 include $fname3;
34 ?>
35 --CLEAN--
36 <?php unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.tar'); ?>
37 <?php unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.tar'); ?>
38 --EXPECTF--
39 bool(true)
40 is_link
41 bool(false)
42 bool(true)
43 bool(false)
44 bool(false)
45 bool(true)
46 string(4) "link"
47 string(3) "dir"
48 bool(true)
49 not found
50 bool(false)
51 dir
52 bool(true)
53 bool(false)