今天,被sqlite的一个机制给坑了。本人用C语言写的cgi程序去访问sqlite数据库,读取没有问题,但是插入新记录和更新数据就不行,在服务器上直接对数据库进行增删查改则没有任何问题。但浏览器上访问并且对数据库有写的操作时,则报错误:
unable to open database file
本人在网上查找了很久,没有找到直接相关的答案。偶在一个百度问答上看到sqlite库在对数据库进行操作时(本人估计是写操作),会在数据库的当前文件夹下创建一个临时文件,当操作结束时,该临时文件将被删除。 而远程用户一般不具备有对临时文件足够的权限所以会造成无法打开、写或者删除临时文件。解决的方法就是递归地(加-R)将数据库所在文件夹设置为任何用户都有可读可写可删的权限。假如sqlite数据库路径为/opt/lampp/cgi-bin/, 则:
chmod -R 777 /opt/lampp/cgi-bin/
原文链接:https://www.f2er.com/sqlite/200831.html