1--TEST-- 2SQLite3::open error test 3--SKIPIF-- 4<?php 5if(substr(PHP_OS, 0, 3) != 'WIN' ) { 6 die('skip windows only test'); 7} 8require_once(__DIR__ . '/skipif.inc'); 9?> 10--FILE-- 11<?php 12$sysroot = exec('echo %systemroot%'); 13$icacls = "$sysroot\\System32\\icacls.exe"; 14$user = get_current_user(); 15$unreadable = __DIR__ . '/unreadable.db'; 16 17touch($unreadable); 18$cmd = $icacls . ' ' . $unreadable . ' /inheritance:r /deny ' . $user . ':(F,M,R,RX,W)'; 19exec($cmd); 20 21try { 22 $db = new SQLite3($unreadable); 23} catch (Exception $e) { 24 echo $e . "\n"; 25} 26echo "Done\n"; 27 28$cmd = $icacls . ' ' . $unreadable . ' /grant ' . $user . ':(F,M,R,RX,W)'; 29exec($cmd); 30unlink($unreadable); 31?> 32--EXPECTF-- 33Exception: Unable to open database: %s in %ssqlite3_15_open_error-win.php:%d 34Stack trace: 35#0 %ssqlite3_15_open_error-win.php(%d): SQLite3->__construct('%s') 36#1 {main} 37Done 38