|
| 1 | +--TEST-- |
| 2 | +Phar: Bug #79082: Files added to tar with Phar::buildFromIterator have all-access permissions |
| 3 | +--SKIPIF-- |
| 4 | +<?php |
| 5 | +if (!extension_loaded("phar")) die("skip"); |
| 6 | +if (defined("PHP_WINDOWS_VERSION_MAJOR")) die("skip not for Windows") |
| 7 | +?> |
| 8 | +--FILE-- |
| 9 | +<?php |
| 10 | +umask(022); |
| 11 | +var_dump(decoct(umask())); |
| 12 | +chmod(__DIR__ . '/test79082/test79082-testfile', 0644); |
| 13 | +chmod(__DIR__ . '/test79082/test79082-testfile2', 0400); |
| 14 | + |
| 15 | +foreach([Phar::TAR => 'tar', Phar::ZIP => 'zip'] as $mode => $ext) { |
| 16 | + clearstatcache(); |
| 17 | + $phar = new PharData(__DIR__ . '/test79082.' . $ext, null, null, $mode); |
| 18 | + $phar->buildFromIterator(new \RecursiveDirectoryIterator(__DIR__ . '/test79082', \FilesystemIterator::SKIP_DOTS), __DIR__ . '/test79082'); |
| 19 | + $phar->extractTo(__DIR__); |
| 20 | + var_dump(decoct(stat(__DIR__ . '/test79082-testfile')['mode'])); |
| 21 | + var_dump(decoct(stat(__DIR__ . '/test79082-testfile2')['mode'])); |
| 22 | + unlink(__DIR__ . '/test79082-testfile'); |
| 23 | + unlink(__DIR__ . '/test79082-testfile2'); |
| 24 | +} |
| 25 | +foreach([Phar::TAR => 'tar', Phar::ZIP => 'zip'] as $mode => $ext) { |
| 26 | + clearstatcache(); |
| 27 | + $phar = new PharData(__DIR__ . '/test79082-d.' . $ext, null, null, $mode); |
| 28 | + $phar->buildFromDirectory(__DIR__ . '/test79082'); |
| 29 | + $phar->extractTo(__DIR__); |
| 30 | + var_dump(decoct(stat(__DIR__ . '/test79082-testfile')['mode'])); |
| 31 | + var_dump(decoct(stat(__DIR__ . '/test79082-testfile2')['mode'])); |
| 32 | + unlink(__DIR__ . '/test79082-testfile'); |
| 33 | + unlink(__DIR__ . '/test79082-testfile2'); |
| 34 | +} |
| 35 | +?> |
| 36 | +--CLEAN-- |
| 37 | +<? |
| 38 | +unlink(__DIR__ . '/test79082.tar'); |
| 39 | +unlink(__DIR__ . '/test79082.zip'); |
| 40 | +unlink(__DIR__ . '/test79082-d.tar'); |
| 41 | +unlink(__DIR__ . '/test79082-d.zip'); |
| 42 | +?> |
| 43 | +--EXPECT-- |
| 44 | +string(2) "22" |
| 45 | +string(6) "100644" |
| 46 | +string(6) "100400" |
| 47 | +string(6) "100644" |
| 48 | +string(6) "100400" |
| 49 | +string(6) "100644" |
| 50 | +string(6) "100400" |
| 51 | +string(6) "100644" |
| 52 | +string(6) "100400" |
0 commit comments