fopen_edgecases2.phpt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. --TEST--
  2. Phar: test edge cases of fopen() function interception #2
  3. --EXTENSIONS--
  4. phar
  5. --INI--
  6. phar.readonly=0
  7. --FILE--
  8. <?php
  9. Phar::interceptFileFuncs();
  10. $fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar.php';
  11. $pname = 'phar://' . $fname;
  12. try {
  13. fopen(array(), 'r');
  14. } catch (TypeError $e) {
  15. echo $e->getMessage(), "\n";
  16. }
  17. chdir(__DIR__);
  18. file_put_contents($fname, "blah\n");
  19. file_put_contents("fopen_edgecases2.txt", "test\n");
  20. $a = fopen($fname, 'rb');
  21. echo fread($a, 1000);
  22. fclose($a);
  23. unlink($fname);
  24. mkdir($pname . '/oops');
  25. file_put_contents($pname . '/foo/hi', '<?php
  26. $context = stream_context_create();
  27. $a = fopen("fopen_edgecases2.txt", "rb", false, $context);
  28. echo fread($a, 1000);
  29. fclose($a);
  30. fopen("../oops", "r");
  31. ?>
  32. ');
  33. include $pname . '/foo/hi';
  34. ?>
  35. --CLEAN--
  36. <?php unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
  37. <?php unlink(__DIR__ . '/fopen_edgecases2.txt'); ?>
  38. --EXPECTF--
  39. fopen(): Argument #1 ($filename) must be of type string, array given
  40. blah
  41. test
  42. Warning: fopen(phar://%sfopen_edgecases2.phar.php/oops): Failed to open stream: phar error: path "oops" is a directory in phar://%sfopen_edgecases2.phar.php/foo/hi on line %d