无法在只读SQLite数据库文件上写入

时间:2014-10-11 19:07:46

标签: php linux sqlite permissions vmware

我有一个应用程序负责我在Windows环境下开发的其他项目的URL路由。

现在我有一个Linux环境,在虚拟机中设置,我无法重新生成我的应用程序的路由,因为我用来存储信息的SQLite文件显然不能由PHP应用程序中的例程编写。

我收到一条带有以下消息的PDOException:

  

SQLSTATE [HY000]:常规错误:8尝试编写只读数据库

我读过this stack说SQLite文件的父文件夹也必须是可写的。嗯......我是Linux世界的新手,我一次解决几个小问题,虽然我理解这一点...... Linux已经/有限制性政策,我不知道如何解决这个问题。 / p>

存储文件的Windows分区,相应于我读过的教程,以便在guest虚拟机(Linux)中访问它们,告诉我我是所有者:

Folder Permissions

我已经阅读了使用不同用户或组运行的PHP脚本。我该怎么办?

叹息......我对这个Linux环境感到生气......

1 个答案:

答案 0 :(得分:0)

在Ubuntu讨论区阅读a comment之后,我对我的问题得到了部分答案。显然,NFS安装文件夹的文件权限,我认为它是Windows N T FS(文件系统),设计很差。

在这个回答之后,我决定将SQLite文件移到已安装文件夹之外的其他地方。我收到一个新的错误,说数据库文件无法打开,但这次我已经知道了here描述的PDO SQLite限制,它说明父文件夹也必须是可写的。

权限已修复且一切正常。 :)

之后,我注意到another comment ahead说这个错误已在Samba 3.2.5中得到修复,这很奇怪,因为在运行 smbstatus 命令之后我收到的版本为 4.1 0.6-Ubuntu的

无论如何......重点是此评论还指出,如果您在CIFS安装期间使用 nobrl 选项挂载分区,则咨询锁不会通过网络传播。

我不知道这意味着什么,我只知道在编辑我的 / etc / fstab (见下文)以包含此选项并重新启动虚拟机后,一切正常。

//WindowsIP/SharedPartitionName /path/to/linux/folder cifs username=myusername,password=mypassword,rw,nobrl,uid=1000,gid=1000,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777    0   0

感谢@AlejandroArbiza的耐心,我希望这对未来的人有所帮助。