На моем Ubuntu 15.04 машине я пытаюсь загрузить SQLite-расширение в пределах моего PHP кода, используя следующий фрагмент кода:нагрузки расширение SQLite внутри PHP на Ubuntu (15,04)
<?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 о том, как заставить это работать.
Может ли кто-нибудь помочь мне получить эту работу из php на Ubuntu 15.04.
Thanx много заранее.
Приветствие, D.
PS: как я использую это при запуске PHPUnit тестов с SQLite в качестве базы данных, я запускаю его в командной строке, а не в контексте веба-сервере.
Какой идентификатор пользователя работает на вашем веб-сервере (работает PHP)? Этот идентификатор имеет разные разрешения для файла libsqlitefunctions.so, чем ваш собственный идентификатор пользователя? – BareNakedCoder
Я запустил PHP-скрипт в командной строке, чтобы получить упомянутый выше вывод, поскольку веб-сервер настроен таким образом, чтобы не показывать эти ошибки. Файл расширения имеет 777 как разрешение и принадлежит тому же пользователю, который запускает скрипт. «$ php test.php» – Dominik
Когда я изменяю отчет об ошибках в php и запускаю скрипт через веб-сервер, я получаю те же ошибки. – Dominik