私はPHPアプリケーションとしてsqlite3を使用しています。私が使用する関数は、PHPに組み込まれているSqlite3パッケージから取得したものです。
テストのためにDBを再起動するなど、一般的なCRUD操作を実行しません。これには、テーブルの削除とダミーデータの再挿入が含まれます。
DBファイルに対するファイル権限はsudo chmod a+rw
およびですsudo chown $USER:www-data
。
これはすべて良いです。
ただし、少なくとも1日1回は書き込み禁止エラーが発生します。データベースを見ると、権限と所有権が変更されました。
ユーザーとグループをに変更し、$USER:$USER
ファイル権限を次に変更します。-rw-r--r--
この動作の原因は何ですか?
オペレーティングシステム:Debian 12
答え1
sqlite3は、データベースで機能するときにコピーを作成して更新し、元のコピーを削除して名前を変更します。
これが発生すると、権限はデフォルト値にリセットされます。次のようにしてデフォルト値を変更できます。
- デフォルトグループを設定するには、親ディレクトリのグループを変更してグループを貼り付けます
sudo chmod g+s .
(.
存在しない場合は親ディレクトリの名前に置き換えます)。これにより、そのディレクトリに作成されたすべてのファイルがそのディレクトリのグループを継承します。 - デフォルトのグループ書き込み権限を設定するには、umaskを変更してください。 umask 000またはumask 002(現在はおそらく022)が必要な場合があります。これは、PHPプロセスの開始時に(または開始する前に)実行する必要があるかもしれません。