readfile_edgecasesU.phpt 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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 6.0 or newer"); ?>
  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. chdir(dirname(__FILE__));
  14. file_put_contents($fname, "blah\n");
  15. file_put_contents("foob", "test\n");
  16. readfile($fname);
  17. unlink($fname);
  18. mkdir($pname . '/oops');
  19. file_put_contents($pname . '/foo/hi', '<?php
  20. readfile("foo/" . basename(__FILE__));
  21. $context = stream_context_create();
  22. readfile("foob");
  23. set_include_path("' . addslashes(dirname(__FILE__)) . '");
  24. readfile("foob", true);
  25. readfile("./hi", 0, $context);
  26. readfile("../oops");
  27. ?>
  28. ');
  29. include $pname . '/foo/hi';
  30. ?>
  31. ===DONE===
  32. --CLEAN--
  33. <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
  34. <?php rmdir(dirname(__FILE__) . '/poo'); ?>
  35. <?php unlink(dirname(__FILE__) . '/foob'); ?>
  36. --EXPECTF--
  37. blah
  38. <?php
  39. readfile("foo/" . basename(__FILE__));
  40. $context = stream_context_create();
  41. readfile("foob");
  42. set_include_path("%stests");
  43. readfile("foob", true);
  44. readfile("./hi", 0, $context);
  45. readfile("../oops");
  46. ?>
  47. test
  48. test
  49. <?php
  50. readfile("foo/" . basename(__FILE__));
  51. $context = stream_context_create();
  52. readfile("foob");
  53. set_include_path("%stests");
  54. readfile("foob", true);
  55. readfile("./hi", 0, $context);
  56. readfile("../oops");
  57. ?>
  58. Warning: readfile(phar://%sreadfile_edgecasesU.phar.php/oops): failed to open stream: phar error: path "oops" is a directory in phar://%sreadfile_edgecasesU.phar.php/foo/hi on line %d
  59. ===DONE===