Linux下编译支持SQLite3加密扩展 - Go语言中文社区

Linux下编译支持SQLite3加密扩展


自PHP 5.3.0起默认启用SQLite3扩展,但是由于SQLite 3 开源版不带加密功能,如果想使用加密功能需要用他的商业版本。这导致PHP默认的SQLite扩展本身是不支持加密功能,只预留了相关的接口,详见官方文档介绍:

An optional encryption key used when encrypting and decrypting an SQLite database. If the SQLite encryption module is not installed, this parameter will have no effect.

但是如果项目需要用到SQLite,如果不加密,对安全多多少少有一点影响。还好SQLite本身有预留加密的接口,许多爱好者就基于这个接口,实现了加密功能。

目前比较有知名度的分别是:wxsqlite3sqlcipher,其中sqlcipher官方有文档介绍如何实现php的加密SQLite3扩展,而wxsqlite3没有,不过目前知名的数据库管理工具Navicat使用的是wxsqlite3的库实现SQLite3的加密连接,所以为了后续维护的方便,故打算使用wxsqlite3。

扩展编译教程

首先你需要确保你没有将SQLite3扩展加入php主程序(编译时使用 --without-sqlite3 禁用 SQLite3 扩展),万一不幸加入了,我目前也不知道有什么好办法,感觉重新编译一下就好了。

到php官网下载相对应的php版本源码(本文以php-7.0.17为例)。

将下载的源码包放到root目录,并解压

tar -zxf php-7.0.17.tar.gz

进入SQLite3扩展源码目录

cd php-7.0.17/ext/sqlite3

将wxsqlite3源码里的 sqlite3secure/src 的所有文件拷贝进 /root/php-7.0.17/ext/sqlite3/libsqlite 生成并编辑预编译配置文件

cp config0.m4 config.m4
vi config.m4

将config.m4里的 sqlite3_extra_sources="libsqlite/sqlite3.c" 替换成 sqlite3_extra_sources="libsqlite/sqlite3secure.c" 生成预编译文件

phpize

预编译

./configure CFLAGS="-DSQLITE_HAS_CODEC"

编译并安装

make && make install

最后在php.ini里加载编译好的so文件即可,这时php就支持加密版本的SQLite3啦,么么哒。

转载于:https://my.oschina.net/jathon/blog/2963127

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_34419321/article/details/91803638
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 20:59:43
  • 阅读 ( 1810 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢