Php 尝试写入只读数据库错误
我使用SQLite数据库创建了一个新的Laravel应用程序,用于用户登录系统。我遇到一个奇怪的问题,我收到以下错误: 我最初认为我的SQLite db文件存在一些权限问题,但是正确的用户有权访问该文件,我已将chmod设置为Php 尝试写入只读数据库错误,php,sqlite,laravel,Php,Sqlite,Laravel,我使用SQLite数据库创建了一个新的Laravel应用程序,用于用户登录系统。我遇到一个奇怪的问题,我收到以下错误: 我最初认为我的SQLite db文件存在一些权限问题,但是正确的用户有权访问该文件,我已将chmod设置为755。 该问题仅在首次登录时发生,如果我刷新页面(并重新发送表单数据),应用程序将成功登录。我的应用程序中的任何其他DB操作都没有遇到此问题。对于可能需要此操作的任何人,请检查您的文件权限 如果您的database.sqlite文件位于database/下,请将权限设置为
755
。
该问题仅在首次登录时发生,如果我刷新页面(并重新发送表单数据),应用程序将成功登录。我的应用程序中的任何其他DB操作都没有遇到此问题。对于可能需要此操作的任何人,请检查您的文件权限 如果您的
database.sqlite
文件位于database/
下,请将权限设置为775(755不适用于我)
还值得将组设置为www-data
,并将所有者设置为您自己
$ chgrp -R www-data database
$ chown -R USERNAME database
显然,用.sqlite
数据库所在文件夹的路径替换数据库。在执行任何迁移命令或passport:install
后,还要检查权限。我确信这是用户错误,但有一次我认为我已经递归地设置了目录上的文件权限,但是实际的.sqlite
文件以某种方式恢复为644
,并且所有者和组都是我的用户
这可能是因为我弄乱了一个构建脚本,但我的观点是——第二次检查要比深入研究这些问题更快
同样值得注意的是,如果您有一些路由工作正常,但其他路由因500错误而失败,请检查表中是否实际有至少1行数据。我建议创建种子并运行php artisan passport:install
,以生成一些初始数据。对于可能需要此功能的任何人,请检查您的文件权限
如果您的database.sqlite
文件位于database/
下,请将权限设置为775(755不适用于我)
还值得将组设置为www-data
,并将所有者设置为您自己
$ chgrp -R www-data database
$ chown -R USERNAME database
显然,用.sqlite
数据库所在文件夹的路径替换数据库。在执行任何迁移命令或passport:install
后,还要检查权限。我确信这是用户错误,但有一次我认为我已经递归地设置了目录上的文件权限,但是实际的.sqlite
文件以某种方式恢复为644
,并且所有者和组都是我的用户
这可能是因为我弄乱了一个构建脚本,但我的观点是——第二次检查要比深入研究这些问题更快
同样值得注意的是,如果您有一些路由工作正常,但其他路由因500错误而失败,请检查表中是否实际有至少1行数据。我建议创建种子并运行php artisan passport:install
,以生成一些初始数据。事实证明,问题在于,如果要执行写入操作(INSERT
,UPDATE
,DELETE
,DROP
,等等),PDO SQLite驱动程序需要,然后,数据库所在的文件夹必须具有写入权限,以及实际的数据库文件。问题是,PDO SQLite驱动程序要求,如果要执行写入操作(INSERT
,UPDATE
,DELETE
,DROP
,等等),然后,数据库所在的文件夹必须具有写入权限,以及实际的数据库文件。存放数据库文件的文件夹必须是可写的。检查您的权限。或者看看这个答案,父目录也有相同的权限755
存放数据库文件的文件夹必须是可写的。检查您的权限。或者看看这个答案,父目录也有相同的权限755
$ chgrp -R www-data database
$ chown -R USERNAME database