Невозможно загрузить расширение в модуле SQLite3, PHP - PullRequest
1 голос
/ 07 мая 2020

Мне нужно использовать расширение example.dll с объектом SQLite3 в PHP. Расширение имеет нестандартную точку входа custom_init. sqlite3.extension_dir в php .ini указан правильно. Пробовал следующий код:

$dbconn = new SQLite3('test.db');
$dbconn->loadExtension('example.dll');
$dbconn->exec("SELECT load_extension('example.dll');");

Как видите, я использовал два подхода для его загрузки.

Первый подход: $dbconn->loadExtension('sqldba.dll');.

  • Не работает на моем XAMPP / Apache с ошибкой Not supported in multithreaded Web servers, хотя и сделано специально для этого. Что может быть не так в конфигурации XAMPP / Apache?
  • На одном не очень известном HTTP-сервере он возвращает «Невозможно загрузить расширение» из-за нестандартной точки входа. Могу ли я как-нибудь указать пользовательскую точку входа?

Второй подход: $dbconn->exec("SELECT load_extension('example.dll', 'custom_init');");.

  • Сбой с ошибкой not authorized. Есть ли способ вызвать здесь sqlite3_enable_load_extension? Я не могу найти такую ​​функцию в документации модуля «SQLite для PHP».

Upd: как-то связано: Как загрузить расширение sqlite в PDO?

1 Ответ

0 голосов
/ 08 мая 2020
  • «Не поддерживается в многопоточных веб-серверах»

В любом случае это не будет работать в IIS, что (на вид) предпочтительнее для меня. Согласно this (строка 414) он включен только в ZTS (Zend Thread Safety). Его отключение обсуждается здесь . Все еще не знаю, что не так с Apache config.

  • «Невозможно загрузить расширение» из-за нестандартной точки входа. Могу я как-нибудь указать пользовательскую точку входа?

Nnnope. Может быть, кому-то стоит добавить запрос функции «настраиваемая точка входа» в трекер PHP, это не кажется таким сложным.

  • "SELECT load_extension('example.dll', 'custom_init');" - сбой с ошибкой «не авторизован».

Перед выполнением load_extension из запроса необходимо вызвать sqlite3_enable_load_extension, а в php -sqlite нет аналога sqlite3_enable_load_extension. Патч PDO-Sqlite для этого описан здесь , но это очень небезопасно. Было бы намного лучше добавить это в качестве новой функции в php -sqlite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...