На моей машине с Ubuntu 15.04 я пытаюсь загрузить расширение sqlite в свой php-код, используя следующий фрагмент:
<?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
Увидеть этот вопрос о том, как заставить это работать.
Может кто-нибудь помочь мне получить это работает изнутри php на Ubuntu 15.04.
Большое спасибо заранее.
Ура,
D.
PS: поскольку я использую это при запуске тестов phpunit с sqlite в качестве базы данных, я запускаю его в командной строке, а не в контексте веб-сервера.
Мне не удалось заставить его работать в Ubuntu 15.04. Обновление до Ubuntu 16.04 решило проблему.
PS: версия php по умолчанию в Ubuntu 16.04 — 7.0.x. Возможно, вам придется установить php5.6, если вы хотите его использовать. Увидеть http://www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu
Других решений пока нет …