私は小さなPerlベースのCGIアプリケーションを持っており、SourceForgeプロジェクト用に提供されたプロジェクトWebスペースで実行しています。このアプリケーションは、SQLite(v。3)データベースファイルにデータを保存します。
シェルからテストスクリプトを実行すると、このSQLiteファイルの読み取りと書き込みができます。ただし、CGIコードがApacheによって実行される場合、読み取り専用アクセス権があります。書き込み操作により、ログファイルエラーが発生します。
error.log.web-2:[Wed Oct 27 14:40:22 2010] [error] [client 127.0.0.1] DBD::SQLite::db do failed: unable to open database file
テストの目的で、そのSQLiteファイルのアクセス許可を777まで上げました。違いはありません。
ただし、SourceForgeのプロジェクトWebスペースにはいくつかの面白い警告があり、私はそれにつまずいているのではないかと思います。通常、メインのWebサーバーファイルシステムはApacheに対して読み取り専用です。実行時に書き込み可能にする必要のあるファイルがある場合は、それらを別の場所にある特別な「永続的」ディレクトリに保存し、Webスペースからそのディレクトリの下の実際のファイルへのシンボリックリンクを作成する必要があります。
私はこれを行い、「persistence」の場所にあるシンボリックリンクと実際のSQLiteファイルの両方のアクセス許可を777に設定しました。キャッシュファイルとログファイルで同じことを行っており、そこで機能するため、このメカニズムは一般的に機能することを知っています。
書き込み用に(生のファイルではなく)シンボリックリンクを開きたくないという方針に沿って、SQLite自体に何かファンキーなものがあるのではないかと思います。