在我的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服务器上下文中运行。
答案 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