Открытие SQLite3 как READONLY с PDO?

В классе SQLite3 есть такой вариант.

$db = new SQLite3('mysqlitedb.db', SQLITE3_OPEN_READONLY);

В PDO вы просто откроете с помощью:

$db = new PDO('sqlite:mysqlitedb.db');

Мой вопрос, однако, есть способ открыть базу данных с PDO в режиме READONLY?

Ответ 1

Я не думаю, что это возможно с pdo (еще?).
Драйвер pdo_sqlite для php 5.3 использует sqlite3_open() в pdo_sqlite_handle_factory(), но вам нужно sqlite3_open_v2() передать флаг только для чтения.

Редактирование:
Но патч будет довольно простым. Взгляните на pdo_mysql_handle_factory() в ext/pdo_mysql/mysql_driver.c и как он использует struct pdo_data_src_parser vars[] для синтаксического анализа строки dns.

Ответ 2

Это станет возможным благодаря выпуску PHP 7.3 (рассчитанный для выпуска в конце 2018 года).

Синтаксис синтаксиса выглядит следующим образом:

$db = new PDO('sqlite:mysqlitedb.db', null, null, [PDO::SQLITE_ATTR_OPEN_FLAGS => PDO::SQLITE_OPEN_READONLY]);

Upstream commit