2016-06-18 57 views
1

ユーザーログインシステム用のsqliteデータベースを利用して新しいLaravelアプリケーションを作成しました。私は、次のエラーが表示奇妙な問題が発生しています:Laravel:読み取り専用データベースへの書き込みエラー

SQLSTATE[HY000]: General error: 8 attempt to write a readonly database (SQL: update "users" set "remember_token" = HH0dtQYZ5BgoOpya1hNRUrFvIZF0dcYqdIvAjz0k6CbTKBqah7wWPdQbgzzL, "updated_at" = 2016-06-18 12:47:43 where "id" = 1)

私は当初、しかし、正しいユーザーがファイルにアクセスする権限を持っていると私は755にはchmod設定している私のsqliteのDBファイルといくつかのアクセス許可の問題があると思いました。 問題は、初めてログインするときに発生します。ページを更新してフォームデータを再送信すると、アプリのログインが正常に完了します。私のアプリ内の他のDBアクションでこの問題は発生しません。

誰かが問題の診断に役立つでしょうか?

+0

データベースファイルを格納するフォルダは書き込み可能でなければなりません。 権限を確認してください。またはこの答えを見てください。http://stackoverflow.com/questions/3319112/sqlite-read-only-database –

+0

親ディレクトリも同じアクセス権を持っています '755' – Imran

答えて

0

これが必要な場合は、ファイルのアクセス許可を確認してください。

database.sqliteファイルがdatabase/未満の場合は、アクセス許可を775に設定します(755は私にとっては機能しません)。

$ chmod -R 775 database 

グループをwww-dataに設定してオーナーになる価値があります。

$ chgrp -R www-data database 
$ chown -R USERNAME database 

明らかにあなたの.sqliteデータベースがあるフォルダへのパスでdatabaseを交換してください。また、移行コマンドの後にアクセス許可を確認するか、passport:installを確認してください。私はそれがユーザーのエラーだと確信していますが、ある時点で私はディレクトリのファイルアクセス権を再帰的に設定したと思っていましたが、実際の.sqliteファイルは何とか644に復帰していました。

これは、私がビルドスクリプトを台無しにしているためかもしれませんが、私の指摘は、2度目の確認はSOの質問を掘るよりも早いです。

いくつかのルートが動作していて、500エラーで失敗している場合は、テーブルに少なくとも1行のデータがあることを確認してください。シードを作成し、php artisan passport:installを実行して初期データを生成することをお勧めします。

関連する問題