使用我的 Django 应用程序,我可以很好地从数据库中读取数据。当应用程序没有权限访问该文件时,它给了我这个错误:
尝试写入只读数据库
这很有道理。所以我编辑了文件的权限,以便 Apache 进程具有写入权限。但是,它不但不能写入,还出现了这个神秘的错误:
无法打开数据库文件
如果有用的话,这里是整个输出:
Request Method: POST
Request URL: http://home-sv-1/hellodjango1/polls/1/vote/
Exception Type: OperationalError
Exception Value:
unable to open database file
Exception Location: /usr/lib/pymodules/python2.5/django/db/backends/sqlite3/base.py in execute, line 193
Python Executable: /usr/bin/python
Python Version: 2.5.2
Python Path: ['/var/www', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/usr/lib/pymodules/python2.5', '/usr/lib/pymodules/python2.5/gtk-2.0']
Server time: Sun, 23 Aug 2009 07:06:08 -0500
如果需要堆栈跟踪,请告诉我。
答案1
答案2
我对此的解决方案更像是这样的。我并不是真的想改变这个目录的所有权。(主要是因为我使用 pi 用户来做 git 之类的事情)
/var/www/mysite $ ls -la sql*
-rw-rw-r-- 1 pi pi 25600 Jan 2 22:57 sqlite.db
(或者你正在使用的任何数据库)
其中 pi 是我创建所有文件的用户。(是的,这是树莓派)
我发现我只需要更改如下权限,而不需要更改 www-data 的权限:
sudo chmod 775 /var/www/mysite
sudo chmod 664 /var/www/mysite/sqlite.db
sudo usermod -a -G pi www-data
这授予组对必要文件的写权限,并将 www-data 用户添加到 pi 组。
注意:如果您有日志记录,您也需要对 django 日志文件执行此操作,否则 apache 不会喜欢它。
答案3
答案4
解决方案是确保包含数据库文件的目录也具有允许该进程的写访问权限。
为了视窗7、8.1、10、Server 2012 等请遵循Bonobo 安装说明:
允许 IIS 用户修改 C:\inetpub\wwwroot\Bonobo.Git.Server\App_Data 文件夹。
要做到这一点:
- 选择 App_Data 文件夹的属性,
- 进入“安全”选项卡,
- 点击编辑,
- 选择 IIS 用户(在我的情况下是 IIS_IUSRS)并添加修改和写入权限,
- 使用“应用”按钮确认这些设置。