Я хочу попробовать 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
папка с той, созданной выше.
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 или что-то в этом роде).
Других решений пока нет …