在 ubuntu (15.04) 上从 php 中加载 sqlite 扩展

load sqlite extension from within php on ubuntu (15.04)

在我的 Ubuntu 15.04 机器上,我尝试使用以下代码片段在我的 php 代码中加载一个 sqlite 扩展:

<?php #content of test.php
$db = new SQLite3(':memory:');
$db->query("SELECT load_extension('/dir/to/sqlite/extension/libsqlitefunctions.so');");
$resultSet = $db->query("SELECT asin(1) as a;");

但我总是收到以下错误信息:

PHP Warning:  SQLite3::query(): not authorized in /my/dir/test.php on line 3
PHP Stack trace:
PHP   1. {main}() /my/dir/test.php:0
PHP   2. SQLite3->query() /my/dir/test.php:3
PHP Warning:  SQLite3::query(): Unable to prepare statement: 1, no such function: asin in /my/dir/test.php on line 4
PHP Stack trace:
PHP   1. {main}() /my/dir/test.php:0
PHP   2. SQLite3->query() /my/dir/test.php:4

从命令行加载相同的扩展工作正常:

$sqlite3
SQLite version 3.8.7.4 2014-12-09 01:34:36
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> SELECT load_extension('/dir/to/sqlite/extension/libsqlitefunctions.so');
sqlite> SELECT ASIN(1) as a;
1.5707963267949

请参阅 了解如何让它发挥作用。

任何人都可以帮助我在 Ubuntu 15.04.

的 php 中完成这项工作

提前致谢。

干杯, D.

PS:因为我在使用 sqlite 作为数据库 运行ning php 单元测试时使用它,我 运行 它在命令行而不是在网络中-服务器上下文。

我没能在 Ubuntu 15.04 中让它工作。升级到 Ubuntu 16.04 解决了问题。

PS:Ubuntu 16.04 上的默认 php 版本是 7.0.x。如果要使用它,您可能需要安装 php5.6。参见 http://www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu