security.phpt 798 B

12345678910111213141516171819202122232425262728293031323334
  1. --TEST--
  2. Phar: test to ensure phar.readonly cannot be circumvented
  3. --EXTENSIONS--
  4. phar
  5. --INI--
  6. phar.readonly=0
  7. --FILE--
  8. <?php
  9. $fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.phar.php';
  10. $fname2 = __DIR__ . '/' . 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. --CLEAN--
  31. <?php unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.1.php'); ?>
  32. --EXPECT--
  33. bool(false)
  34. Write operations disabled by the php.ini setting phar.readonly