readfile_edgecases.phpt 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. --TEST--
  2. Phar: test edge cases of readfile() function interception
  3. --SKIPIF--
  4. <?php if (!extension_loaded("phar")) die("skip");?>
  5. <?php if (version_compare(PHP_VERSION, "6.0", ">=")) die("skip requires php older than 6.0"); ?>
  6. --INI--
  7. phar.readonly=0
  8. --FILE--
  9. <?php
  10. Phar::interceptFileFuncs();
  11. $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
  12. $pname = 'phar://' . $fname;
  13. readfile(array());
  14. chdir(dirname(__FILE__));
  15. file_put_contents($fname, "blah\n");
  16. file_put_contents("foob", "test\n");
  17. readfile($fname);
  18. unlink($fname);
  19. mkdir($pname . '/oops');
  20. file_put_contents($pname . '/foo/hi', '<?php
  21. readfile("foo/" . basename(__FILE__));
  22. $context = stream_context_create();
  23. readfile("foob");
  24. set_include_path("' . addslashes(dirname(__FILE__)) . '");
  25. readfile("foob", true);
  26. readfile("./hi", 0, $context);
  27. readfile("../oops");
  28. ?>
  29. ');
  30. include $pname . '/foo/hi';
  31. ?>
  32. ===DONE===
  33. --CLEAN--
  34. <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
  35. <?php rmdir(dirname(__FILE__) . '/poo'); ?>
  36. <?php unlink(dirname(__FILE__) . '/foob'); ?>
  37. --EXPECTF--
  38. Warning: readfile() expects parameter 1 to be a valid path, array given in %sreadfile_edgecases.php on line %d
  39. blah
  40. <?php
  41. readfile("foo/" . basename(__FILE__));
  42. $context = stream_context_create();
  43. readfile("foob");
  44. set_include_path("%stests");
  45. readfile("foob", true);
  46. readfile("./hi", 0, $context);
  47. readfile("../oops");
  48. ?>
  49. test
  50. test
  51. <?php
  52. readfile("foo/" . basename(__FILE__));
  53. $context = stream_context_create();
  54. readfile("foob");
  55. set_include_path("%stests");
  56. readfile("foob", true);
  57. readfile("./hi", 0, $context);
  58. readfile("../oops");
  59. ?>
  60. Warning: readfile(phar://%sreadfile_edgecases.phar.php/oops): failed to open stream: phar error: path "oops" is a directory in phar://%sreadfile_edgecases.phar.php/foo/hi on line %d
  61. ===DONE===