create_new_and_modify.phpt 1.2 KB

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