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
22
22
23
23
public function __construct ($ path = ':memory: ' )
24
24
{
25
+ if ($ path !== ':memory: ' && !is_file ($ path )) {
26
+ touch ($ path ); // ensures ordinary file permissions
27
+ }
28
+
25
29
$ this ->pdo = new \PDO ('sqlite: ' . $ path );
26
30
$ this ->pdo ->setAttribute (\PDO ::ATTR_ERRMODE , \PDO ::ERRMODE_EXCEPTION );
27
31
$ 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