Apache-sqlite3.OperationalError:尝试编写只读数据库

时间:2019-01-09 04:00:21

标签: python-3.x apache flask sqlite centos

我正在CentOS7上运行Flask应用程序,并使用sqlite3作为数据库,并使用apache作为虚拟主机。

但是,当用户尝试在我的Web应用程序上执行写操作时,我遇到了sqlite3.OperationalError: attempt to write a readonly database错误。 (从数据库读取数据就可以了)

我通读了很多有关文件权限问题的问题,我尝试授予对项目文件夹和.db文件的所有访问权限,但是仍然出现错误。有谁知道发生了什么事?

Apache httpd.conf

<Directory />
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

虚拟主机.conf

<VirtualHost *:82>
    ServerName myweb.com

    WSGIDaemonProcess myweb user=flaskapp group=flaskapp threads=5
    WSGIScriptAlias / /var/www/myweb/wsgi.py

    <Directory /var/www/myweb>
        WSGIProcessGroup myweb
        WSGIApplicationGroup %{GLOBAL}
        Require all granted
    </Directory>
</VirtualHost>

项目文件夹的文件权限

[root@localhost myweb]# ls -l
total 20
-rwxrwxrwx. 1 flaskapp root     6785 Jan  9 10:33 index.py
-rwxrwxrwt. 1 flaskapp flaskapp 8192 Jan  9 10:19 myweb.db
drwxr-xr-x. 2 flaskapp root       34 Jan  8 18:46 __pycache__
drwxr-xr-x. 2 flaskapp root       77 Jan  8 18:46 static
drwxr-xr-x. 2 flaskapp root      122 Jan  8 18:46 templates
-rwxr-xr-x. 1 flaskapp root      133 Jan  8 18:52 wsgi.py

我的设置为:CentOS7,Python3.6.7,Apache2.4.6,sqlite3

1 个答案:

答案 0 :(得分:0)

问题似乎与CentOS 7上的SELinux有关。我已通过setenforce 0暂时关闭SELinux来解决了该问题。