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 @@ -38,6 +38,10 @@ private function open()
3838 throw new Nette \NotSupportedException ('SQLiteJournal requires PHP extension pdo_sqlite which is not loaded. ' );
3939 }
4040
41+ if ($ this ->path !== ':memory: ' && !is_file ($ this ->path )) {
42+ touch ($ this ->path ); // ensures ordinary file permissions
43+ }
44+
4145 $ this ->pdo = new \PDO ('sqlite: ' . $ this ->path );
4246 $ this ->pdo ->setAttribute (\PDO ::ATTR_ERRMODE , \PDO ::ERRMODE_EXCEPTION );
4347 $ this ->pdo ->exec ('
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ /**
4+ * Test: Nette\Caching\Storages\SQLiteJournal database file permissions.
5+ */
6+
7+ use Nette \Caching \Storages \SQLiteJournal ;
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 . '/sqlitejournal.permissions.1.sqlite ' ;
23+ Assert::false (file_exists ($ file ));
24+
25+ umask (0 );
26+ (new SQLiteJournal ($ file ))->write ('foo ' , []);
27+
28+ Assert::same (0666 , fileperms ($ file ) & 0777 );
29+ });
30+
31+
32+ test (function () {
33+ $ file = TEMP_DIR . '/sqlitejournal.permissions.2.sqlite ' ;
34+ Assert::false (file_exists ($ file ));
35+
36+ umask (0077 );
37+ (new SQLiteJournal ($ file ))->write ('foo ' , []);
38+
39+ Assert::same (0600 , fileperms ($ file ) & 0777 );
40+ });
You can’t perform that action at this time.
0 commit comments