博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlcipher的php扩展运行在fast-cgi:php-fpm下工作不正常
阅读量:4865 次
发布时间:2019-06-11

本文共 804 字,大约阅读时间需要 2 分钟。

今天发现了这样的问题,php-fpm运行sqlcipher时,有些数据库工作正常,有些却不正常。

不正常的,都在日志上报错,也就是php处理异常了。

这个报错发生在执行sql语句时,通常就是sqlcipher实际去解密,分析数据库结构之时。

为什么其它的数据库又正常呢,反复在python和php下执行,验证并不是key的问题后。这就怪事了,同一php代码,在php下执行正常,在php-fpm(cgi for nginx)却不正常。

最后发现,不正常的数据库处理,都发生在数据库文件大于30M。通过sqlcipher解密出数据库文件,让php-fpm直接使用没有加密的数据库文件(体积在30M以上),却一切正常。

 

补充:

第二天,发觉不对,因为在我的开发环境中,php-fpm跑sqlcipher是一切正常的,但是放到服务器上就不能正常跑。开发机器和服务器是同样版本的linux,安装同样的包,唯一就是硬件不同。开发机是i5上虚拟机,服务器是至强cpu。都是x86_64,也不用特殊的扩展指令集。不管怎么,在服务器上重新编译php的sqlcipher扩展,结果也是不行。因为使用php去直接运行代码是跑得正常的,所以将 nginx 的 cgi 从php-fpm 转到 php-cgi,果然没有出错一切正常。xdebug也只能跟踪php代码,扩展是c层的东西,当控制流从php层进入扩展的c层就没办法了,不好调试。php-fpm是多进程的,gdb也不好命中。

 

sqlcipher在php-fpm下工作时,如果加密的数据库文件超过30M(临界点在多少没仔细去测) 后,就会不正常。

 

在使用sqlcipher_export导出解密数据库时,如果没有将解密数据库detach就退出命令行,导出的数据库仍旧是加密的。

转载于:https://www.cnblogs.com/bbqzsl/p/8447260.html

你可能感兴趣的文章
世界上有10种软件公司:一种像工厂,另一种像电影摄制组
查看>>
[Noip2007] 字符串的展开
查看>>
linux mint 18.2 install postgresql
查看>>
关于内存管理
查看>>
zbb20171221 thymeleaf 基本语法
查看>>
C#中is与as的区别分析
查看>>
给别的DIV上面加事件
查看>>
[转载] JSON.stringify 语法讲解
查看>>
WPF 和 美工
查看>>
vue路由的两种模式配置以及history模式下面后端如何配置
查看>>
python函数注释,参数后面加冒号:,函数后面的箭头→是什么?
查看>>
计算月初和月末,年初和年末的日期
查看>>
Linux内核中的中断
查看>>
以rem为单位根据移动设备的分辨率动态设置font-size
查看>>
Selenium2+python自动化61-Chrome您使用的是不受支持的命令行标记:--ignore-certificate-errors...
查看>>
system("x")
查看>>
thinkphp3.2.3分页
查看>>
python程序之profile分析
查看>>
分析与设计
查看>>
sklearn之validationcurve
查看>>