sqlcipher的php扩展运行在fast-cgi:php-fpm下工作不正常
今天发现了这样的问题,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就退出命令行,导出的数据库仍旧是加密的。
最新文章
- MyBatis Mapper.xml文件中 $和#的区别
- View and Data API 现在支持IE11了
- oracle查询以当前年份为准的近些年数据
- Unity3D特效-场景淡入淡出
- 【转载】Debian 6安装小记
- java 数组基本操作(一维)
- 【CSS3】---曲线阴影翘边阴影
- C# this指针用法
- PC问题-可以PING通IP,PING名字不通,可以远程,但不能访问共享文件夹?
- java 中的匿名内部类
- 简单的网页采集程序(ASP.NET MVC4)
- Lambda表达式中的表达式lambda和语句lambda区别
- javascript 之 this 用法
- RT3070 USB WIFI 在连接socket编程过程中问题总结
- jQuery添加删除节点例子第十节";员工增删表";
- 取n到m行
- Oracle数据文件迁移到裸设备
- Android 性能优化 SparseArray【转载】
- 6-完美解决Error:SSL peer shut down incorrectly
- 《Lua程序设计》9.1 协同程序基础 学习笔记