Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 尝试写入只读数据库错误_Php_Sqlite_Laravel - Fatal编程技术网

Php 尝试写入只读数据库错误

Php 尝试写入只读数据库错误,php,sqlite,laravel,Php,Sqlite,Laravel,我使用SQLite数据库创建了一个新的Laravel应用程序,用于用户登录系统。我遇到一个奇怪的问题,我收到以下错误: 我最初认为我的SQLite db文件存在一些权限问题,但是正确的用户有权访问该文件,我已将chmod设置为755。 该问题仅在首次登录时发生,如果我刷新页面(并重新发送表单数据),应用程序将成功登录。我的应用程序中的任何其他DB操作都没有遇到此问题。对于可能需要此操作的任何人,请检查您的文件权限 如果您的database.sqlite文件位于database/下,请将权限设置为

我使用SQLite数据库创建了一个新的Laravel应用程序,用于用户登录系统。我遇到一个奇怪的问题,我收到以下错误:

我最初认为我的SQLite db文件存在一些权限问题,但是正确的用户有权访问该文件,我已将chmod设置为
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