create_new_and_modify.phpt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. --TEST--
  2. Phar: create and modify phar
  3. --SKIPIF--
  4. <?php if (!extension_loaded("phar")) die("skip"); ?>
  5. <?php if (!extension_loaded("spl")) die("skip SPL not available"); ?>
  6. --INI--
  7. phar.readonly=0
  8. phar.require_hash=1
  9. --FILE--
  10. <?php
  11. $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
  12. $pname = 'phar://' . $fname;
  13. @unlink($fname);
  14. file_put_contents($pname . '/a.php', "brand new!\n");
  15. $phar = new Phar($fname);
  16. $sig1 = $phar->getSignature();
  17. include $pname . '/a.php';
  18. if (function_exists("opcache_get_status")) {
  19. $status = opcache_get_status();
  20. if ($status["opcache_enabled"]) {
  21. ini_set("opcache.revalidate_freq", "0");
  22. sleep(2);
  23. }
  24. }
  25. file_put_contents($pname .'/a.php', "modified!\n");
  26. file_put_contents($pname .'/b.php', "another!\n");
  27. $phar = new Phar($fname);
  28. $sig2 = $phar->getSignature();
  29. var_dump($sig1[b'hash']);
  30. var_dump($sig2[b'hash']);
  31. var_dump($sig1[b'hash'] != $sig2[b'hash']);
  32. include $pname . '/a.php';
  33. include $pname . '/b.php';
  34. ?>
  35. ===DONE===
  36. --CLEAN--
  37. <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar.php'); ?>
  38. --EXPECTF--
  39. brand new!
  40. string(40) "%s"
  41. string(40) "%s"
  42. bool(true)
  43. modified!
  44. another!
  45. ===DONE===