php – 如何在PDO中加载sqlite扩展?
发布时间:2020-12-13 17:54:01 所属栏目:PHP教程 来源:网络整理
导读:首先,我想通知案件,以避免误解. 通过sqlite扩展,我提到了Sqlite的扩展,如FTS,而不是PHP的sqlite扩展. 我一直在我的应用程序中使用PDO Sqlite,它无法更改. 在我看到here时,可以加载Sqlite扩展,如下所示: SELECT load_extension('xyz.so');$db = new PDO ( 's
首先,我想通知案件,以避免误解.
通过sqlite扩展,我提到了Sqlite的扩展,如FTS,而不是PHP的sqlite扩展. 我一直在我的应用程序中使用PDO Sqlite,它无法更改. 在我看到here时,可以加载Sqlite扩展,如下所示: SELECT load_extension('xyz.so'); $db = new PDO ( 'sqlite:qwert.db' ); $db->query("SELECT load_extension('myextension.so');"); $db->query("SELECT myfunction(name) FROM table"); $rows = $db->fetchAll(PDO::FETCH_CLASS,'stdClass'); 注意:myfunction是myextension的方法 但是,当我使用PDO中的此查询进行测试时,它会返回“未授权”消息. 仅出于测试目的,我尝试使用以下代码加载扩展程序:PHP’s Sqlite3 extension: $db = new SQLite3('qwer.db'); $db->loadExtension('xyz.so'); 有用 据我所知,PDO Sqlite没有像loadExtension这样的方法来加载扩展 知道怎么处理这个?
找不到编译器标志,我们已经用pdo_sqlite扩展中的quick’n脏黑客解决了它.使用sqlite3 API中的sqlite3_enable_load_extension()修补sqlite_driver.c.
--- php-5.3.7.old/ext/pdo_sqlite/sqlite_driver.c 2012-01-06 11:04:44.000000000 -0500 +++ sqlite_driver.c 2012-01-06 08:16:58.000000000 -0500 @@ -718,6 +718,8 @@ goto cleanup; } + sqlite3_enable_load_extension(H->db,1); + if (PG(safe_mode) || (PG(open_basedir) && *PG(open_basedir))) { sqlite3_set_authorizer(H->db,authorizer,NULL); } 希望这可以帮助… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |