File tree Expand file tree Collapse file tree 2 files changed +44
-0
lines changed
Expand file tree Collapse file tree 2 files changed +44
-0
lines changed Original file line number Diff line number Diff line change @@ -22,6 +22,10 @@ class SQLiteStorage extends Nette\Object implements Nette\Caching\IStorage
2222
2323 public function __construct ($ path = ':memory: ' )
2424 {
25+ if ($ path !== ':memory: ' && !is_file ($ path )) {
26+ touch ($ path ); // ensures ordinary file permissions
27+ }
28+
2529 $ this ->pdo = new \PDO ('sqlite: ' . $ path );
2630 $ this ->pdo ->setAttribute (\PDO ::ATTR_ERRMODE , \PDO ::ERRMODE_EXCEPTION );
2731 $ this ->pdo ->exec ('
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ /**
4+ * Test: Nette\Caching\Storages\SQLiteStorage database file permissions.
5+ */
6+
7+ use Nette \Caching \Storages \SQLiteStorage ;
8+ use Tester \Assert ;
9+
10+
11+ require __DIR__ . '/../bootstrap.php ' ;
12+
13+
14+ if (!extension_loaded ('pdo_sqlite ' )) {
15+ Tester \Environment::skip ('Requires PHP extension pdo_sqlite. ' );
16+ } elseif (defined ('PHP_WINDOWS_VERSION_BUILD ' )) {
17+ Tester \Environment::skip ('UNIX test only. ' );
18+ }
19+
20+
21+ test (function () {
22+ $ file = TEMP_DIR . '/sqlitestorage.permissions.1.sqlite ' ;
23+ Assert::false (file_exists ($ file ));
24+
25+ umask (0 );
26+ (new SQLiteStorage ($ file ))->write ('foo ' , 'bar ' , []);
27+
28+ Assert::same (0666 , fileperms ($ file ) & 0777 );
29+ });
30+
31+
32+ test (function () {
33+ $ file = TEMP_DIR . '/sqlitestorage.permissions.2.sqlite ' ;
34+ Assert::false (file_exists ($ file ));
35+
36+ umask (0077 );
37+ (new SQLiteStorage ($ file ))->write ('foo ' , 'bar ' , []);
38+
39+ Assert::same (0600 , fileperms ($ file ) & 0777 );
40+ });
You can’t perform that action at this time.
0 commit comments