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

时间:2016-05-18 22:01:42

标签: php ubuntu sqlite ubuntu-15.04

在我的Ubuntu 15.04计算机上,我尝试使用以下代码片段在我的php代码中加载sqlite-extension:

<?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

请参阅this question了解如何使其发挥作用。

任何人都可以帮助我在Ubuntu 15.04上的php中使用它。

提前很多。

干杯, d。

PS:我在使用sqlite作为数据库运行phpunit测试时使用它,我在命令行上运行它,而不是在Web服务器上下文中运行。

1 个答案:

答案 0 :(得分:0)

我无法让它在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