php でsqliteを使ってファイルを保存しようとしたら?エラー?
sqliteを使うときは、上位ディレクトリに書き込み権限が必要
つまり、このような状態でないと書き込みできない
takuya@~/Desktop/temp$ ls -la total 0 drwxrwxr-x 3 takuya staff 102 11 24 19:24 . -rw-rwxr-- 1 takuya staff 0 11 24 19:24 sample.db
全ての権限をチェックすればエラーは出ない。
エラーメッセージはだいたい次のようになってたり。
General error: 14 unable to open database file
内包する上位ディレクトリの書き込み権限チェックとかちょっと頭悪そう。
sqliteのdb ファイルが777 でもファイル更新できない?え?なんで?
ちょっと何言ってんだこいつ状態なので、落ち着いて考えてみます。
実際にはどういうこと?
/path/to/sample.db
というSQLiteがあったとき
/path/to/sample.db.journal
というファイルをつくることになる。
さらに、このjournal ファイルを削除するので、ディレクトリに「書込」の権限が必要です。
setfacl とかしてるときは更に削除にも注意が必要ですね。
なので、sqliteを使うときは、そのディレクトリに書き込み権限(ファイルを作成)が必要になる。 理屈がわかれば、安心ですね。不親切ではあるが、観察すればすぐわかる。
わかれば納得。ハマれば地獄。