2009-09-28 13 views
18

私のSQlite3データベースにデータを挿入しようとしています(これはコマンドラインで動作します)。 私はdata1.dbファイルに777の権限を与えましたが、それでもファイルを開くことができないと言います。PHP 5.3.0でSQlite3のchmod 777データベースファイルに書き込めません

$db = new SQLite3('./data1.db'); 
$db->exec("INSERT INTO table1 (fileName) VALUES ('test.txt')"); 

しかし、奇妙なことは、私は、データベースから読み取ることができるということである:このコードを使用して

Warning: SQLite3::exec() [sqlite3.exec]: unable to open database file in /var/www/test.php on line 3 

は、私はこのエラーを取得する(これは動作します)

print_r($db->querySingle('SELECT fileName FROM table1', true)); 

PHP 5.3.0を実行しています

+0

デバイス上のスペース? – LiraNuna

+2

データベースに対する実行権限は必要ありません。実行可能なスクリプトやプログラムではありません。一般的には、パブリック書き込みアクセスを避ける必要があります。つまり、いつ誰がデータベースを破壊するかは気にしません(ファイルにパブリック書き込み許可がある場合は誰でもできます)。したがって、多くの場合、666、好ましくは664以上の厳しい権限を使用する必要があります。 –

+0

はい、私はそれが欠陥であるかどうかを見るためにそれをテストしていたことを知っています。 (幸運にもそうではありませんでした)。 権限を644に変更し、wwwディレクトリの外に移動しました。 – Mint

答えて

60

SQLiteファイルを含むフォルダは、変更する場合は、Webユーザが書き込み可能である必要があります。 .dbファイルが書き込み可能であるだけでは不十分です。

がの/ var/WWWディレクトリ、または手動でのchown -Rユーザ所有するグループにsqliteのユーザーを追加するWhy can't DBD::SQLite insert into a database through my Perl CGI script?

+1

'sudo chown www-data。 。 –

2

てみてくださいを参照してください:ユーザーの/ var/www /以下に、ディレクトリがsqliteので書き込み可能である必要がありますユーザー。

+1

ディレクトリとそれに含まれるすべてのファイルの再所有権が変更されるのは、Webサーバーのユーザーアカウントにディレクトリとその中のファイルへの書き込みアクセス権を与えるだけであれば、おそらく非常に良い考えです。 –

1

CLIを使用してPHPを実行する場合は、「sudo -u www-data php script.php」を使用して、PHPがsqliteに書き込むようにする必要があります。

関連する問題