security.phpt 892 B

123456789101112131415161718192021222324252627282930313233343536
  1. --TEST--
  2. Phar: test to ensure phar.readonly cannot be circumvented
  3. --SKIPIF--
  4. <?php if (!extension_loaded("phar")) die("skip");?>
  5. --INI--
  6. phar.readonly=0
  7. --FILE--
  8. <?php
  9. $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.phar.php';
  10. $fname2 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.1.php';
  11. $a = new Phar($fname);
  12. $a->setStub('<?php
  13. Phar::mapPhar();
  14. $phar = new Phar(__FILE__);
  15. var_dump($phar->isWritable());
  16. try {
  17. $phar["b"] = "should not work!";
  18. } catch (Exception $e) {
  19. echo $e->getMessage(),"\n";
  20. }
  21. __HALT_COMPILER();
  22. ?>');
  23. $a['hi'] = 'hi';
  24. unset($a);
  25. copy($fname, $fname2);
  26. Phar::unlinkArchive($fname);
  27. ini_set('phar.readonly', 1);
  28. include $fname2;
  29. ?>
  30. ===DONE===
  31. --CLEAN--
  32. <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.1.php'); ?>
  33. --EXPECT--
  34. bool(false)
  35. Write operations disabled by the php.ini setting phar.readonly
  36. ===DONE===