1--TEST-- 2PDO_sqlite: Testing open flags 3--SKIPIF-- 4<?php if (!extension_loaded('pdo_sqlite')) print 'skip not loaded'; ?> 5--FILE-- 6<?php 7 8$filename = __DIR__ . DIRECTORY_SEPARATOR . "pdo_sqlite_open_flags.db"; 9 10// Default open flag is read-write|create 11$db = new PDO('sqlite:' . $filename, null, null, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); 12 13var_dump($db->exec('CREATE TABLE test1 (id INT);')); 14 15$db = new PDO('sqlite:' . $filename, null, null, [PDO::SQLITE_ATTR_OPEN_FLAGS => PDO::SQLITE_OPEN_READONLY, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); 16 17var_dump($db->exec('CREATE TABLE test2 (id INT);')); 18?> 19--CLEAN-- 20<?php 21$filename = __DIR__ . DIRECTORY_SEPARATOR . "pdo_sqlite_open_flags.db"; 22if (file_exists($filename)) { 23 unlink($filename); 24} 25?> 26--EXPECTF-- 27int(0) 28 29Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 8 attempt to write a readonly database in %s 30Stack trace: 31%s 32#1 {main} 33 thrown in %s 34