1

我试着问这个问题php - 是否有启用 fts3 的 php5-sqlite3 的二进制包?- 问 Ubuntu - 堆栈交换;但那里没有骰子 - 所以我会在这里用不同的词再试一次:如何在 Ubuntu Linux 服务器上的 SQLite3 下为 php 启用 FTS3?

我想使用 Sqlite 为 Mediawiki 启用 FTS3 - 我通常会收到“ no such module: fts3”错误。

我已经找到:

> 这里是错误:
>
> 'SQLSTATE[HY000]: 一般错误:1 没有这样的模块:fts3'
>

有一个编译时选项:SQLITE_ENABLE_FTS3

...我想,最终说没有其他方法可以为 PHP 的 SQlite3 激活 FTS3 - 除了从源代码构建用于 php 的 sqlite?这对我来说不是一个好选择,因为我在生产服务器上没有任何权利......这就是为什么我会再次问:是否有某种二进制包可以帮助我启用 FTS3?

如果没有二进制包 - 我想 php 的 sqlite3 部分将被编译为一个.so对象。有没有办法说服 PHP 以某种方式.so为特定的服务器目录加载“外部”(类似于如何使用ini_setdisplay_errors在本地更改)?

编辑:奖金问题:假设我安装了 sqlite3,并从源代码启用了 FTS3;PHP 会在 中显示某种消息/指示phpinfo(),该消息是什么?

提前感谢您的任何答案,
干杯!

4

2 回答 2

2

使用如何为 php 启用 sqlite3 的答案?- 堆栈溢出,而不是

$ sudo ./configure

你需要

$ sudo CPPFLAGS="-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS" ./configure

归功于:sqlite - fts3 手册。澄清一下,你不需要安装单独的 php5-sqlite3 包,因为如果你查看http://pecl.php.net/get/sqlite3-0.6.tgz你会看到 php_sqlite3 包含在那里。顺便说一句,安装文件中的重要行:

确保您的 php.ini 中有 extension=sqlite3.so

于 2011-07-19T21:27:58.500 回答
0

您不需要重新编译 sqlite 扩展。您可以将扩展加载为:

<?php
$db = new SQLite3('mysqlitedb.db');
$db->loadExtension('myExtension.so');
?>

https://secure.php.net/manual/en/sqlite3.loadextension.php

于 2018-02-18T12:14:00.493 回答