2016-05-18 13 views
0

На моем 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 в качестве базы данных, я запускаю его в командной строке, а не в контексте веба-сервере.

+0

Какой идентификатор пользователя работает на вашем веб-сервере (работает PHP)? Этот идентификатор имеет разные разрешения для файла libsqlitefunctions.so, чем ваш собственный идентификатор пользователя? – BareNakedCoder

+0

Я запустил PHP-скрипт в командной строке, чтобы получить упомянутый выше вывод, поскольку веб-сервер настроен таким образом, чтобы не показывать эти ошибки. Файл расширения имеет 777 как разрешение и принадлежит тому же пользователю, который запускает скрипт. «$ php test.php» – Dominik

+0

Когда я изменяю отчет об ошибках в php и запускаю скрипт через веб-сервер, я получаю те же ошибки. – Dominik

ответ

0

Мне не удалось заставить его работать в 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