Как включить расширение `JSON1` для` SQLite3` в PHP?

Я хочу попробовать JSON1 расширение для SQLite в PHP7, но оно не включено по умолчанию.

Итак, я составил новый php_sqlite3.dll с JSON1 расширение включено согласно этим инструкции но когда я пытаюсь запустить PHP, я получаю сообщение об ошибке;

Warning: PHP Startup: Invalid library (maybe not a PHP library) 'sqlite3'
in Unknown on line 0

Что я делаю неправильно?


Дальнейшая информация

После замены php_sqlite3.dll с моей версией SQLite3 класс больше не работает в PHP, например. эта строка кода PHP;

$cn = new SQLite3(':memory:');

дает эту ошибку;

Fatal error: Uncaught Error: Class 'SQLite3' not found

Я скомпилировал новый php_sqlite3.dll при выполнении;

gcc -g -shared -DSQLITE_ENABLE_JSON1 sqlite3.c -o php_sqlite3.dll

Потом я заменил php_sqlite3.dll в моем Windows PHP /ext папка с той, созданной выше.

2

Решение

php_sqlite3.dll библиотека — это библиотека, написанная на php, которая оборачивает библиотеку базы данных SQLite.

Чтобы использовать расширение SQLite JSON1, необходимо скомпилировать расширение как автономную загружаемую библиотеку и использовать load_extension() Функция SQL для загрузки расширения во время выполнения.

$db = new SQLite3('mysqlitedb.db');
$db->exec('load_extension('json1.dll');');

или вы можете просто позвонить с php следующим образом:

$db = new SQLite3('mysqlitedb.db');
$db->loadExtension('json1.dll');

Похоже, вы уже знаете, как скомпилировать исходный файл C, поэтому я не буду вдаваться в подробности.

РЕДАКТИРОВАТЬ Виноват.

Чтобы скомпилировать расширение json, используйте

gcc -g -shared json1.c sqlite3ext.h -o json1.dll

и убедитесь, что оба json1.c а также sqlite3ext.h файлы находятся в одном каталоге. Из вашего примера я предполагаю, что вы используете совместимый с Windows компилятор GNU (MinGW или что-то в этом роде).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]