我尝试在CentOS上使用SQLite3FTS5(全文搜索)和PHP..但是我尝试了这么长时间后还是没有成功。
我正在为SQlite构建可加载的FTS5扩展,并尝试了以下步骤(从docs开始)
在服务器终端(SSH)中:
$ yum install libsqlite3x-devel
$ wget -c http://www.sqlite.org/src/tarball/SQLite-trunk.tgz?uuid=trunk -O SQLite-trunk.tgz
$ tar -xzf SQLite-trunk.tgz
$ cd SQLite-trunk
$ ./configure && make fts5.c
$ gcc -g -fPIC -shared fts5.c -o fts5.so
但在最后一步中出现以下错误:
fts5_index.c:732:11: error: ‘SQLITE_PREPARE_PERSISTENT’ undeclared (first use in this function)
fts5_index.c:732:37: error: ‘SQLITE_PREPARE_NO_VTAB’ undeclared (first use in this function)
fts5_main.c:888:29: error: ‘SQLITE_PREPARE_PERSISTENT’ undeclared (first use in this function)
fts5_main.c:1029:31: error: ‘SQLITE_PREPARE_PERSISTENT’ undeclared (first use in this function)
fts5_storage.c:139:15: error: ‘SQLITE_PREPARE_PERSISTENT’ undeclared (first use in this function)
fts5_storage.c:140:41: error: ‘SQLITE_PREPARE_NO_VTAB’ undeclared (first use in this function)
文件fts5.so
未生成,因此无法在服务器中使用
那么,你有任何想法如何修复这个错误,并成功地产生fts5.so
文件
1条答案
按热度按时间nbysray51#
我发现我必须在最后一步之前生成头文件
因此完整的步骤如下所示:
然后,我必须加载
fts5.so
作为sqlite的可加载扩展1-将
fts5.so
文件复制到服务器/sqlite_ext
上的新文件夹中2-编辑
php.ini
中的sqlite3.extension_dir
,使其指向相同的文件夹,如下所示3-然后在我的php文件中,加载扩展名:
更新:
最好使用
--enable-fts5
选项将服务器的SQLite作为一个整体进行更新现在为服务器安装了最新的SQLite,但没有为PHP安装,让我们为PHP安装它
在服务器中使用
$ sqlite3 --version
检查SQLite版本,在PHP中使用phpinfo();
检查SQLite版本sqlite-autoconf amalgamation
。可能有更新的版本适合你。check here