0

phpを使用して最初のsqliteプログラムをローカルホストで動作させようとしていますが、動作させることができません。私のマシンにはSqlite3をインストールしましたが、すべてC /C++で正常に動作します。

作成したデータベースをローカルホストに移動し、dbファイルへの読み取り/書き込み権限を付与し、phpを介してそれらにアクセスしようとすると、次のエラーメッセージが表示されます。

ファイルが暗号化されているか、データベースではありません

これが私が使用するサンプルコードです:

<?php
$dbhandle = sqlite_open("m_test1.db", 0666, $error);
if (!$dbhandle) die ($error);

$stm = "CREATE TABLE Friends(Id integer PRIMARY KEY," . 
   "Name text UNIQUE NOT NULL, Sex text CHECK(Sex IN ('M', 'F')))";
$ok = sqlite_exec($dbhandle, $stm, $error);

if (!$ok)
   die("Cannot execute query. $error");

echo "Database Friends created successfully";
sqlite_close($dbhandle);
?>

データベースが存在しないときにブラウザでこのコードを実行すると、次のようになります。

データベースを開くことができません:/var/www/m_test1.db

情報:

sqlite_libversion:2.8.17
phpversion:5.3.2-1ubuntu4.14
linux Ubuntu 10.04

phpinfoを見ると、SQLite、SQLite3、PDO_Sqliteが有効になっているようです。

これを機能させるための助けをいただければ幸いです。

編集:解決策は次のとおりです:'chmod ugo + rwx / var / www' :)
その後、sqlite_openとPDOの両方がデータベースを作成できます。

4

1 に答える 1

3

PHP5 はsqlite_open(). ここに示すように、代わりに PDO を使用する必要があります: https://stackoverflow.com/a/4751965/369032

(上記の回答からコピーされたコード)

try 
{
    /*** connect to SQLite database ***/

    $dbh = new PDO("sqlite:VPN0.sqlite");
    echo "Handle has been created ...... <br><br>";

}
catch(PDOException $e)
{
    echo $e->getMessage();
    echo "<br><br>Database -- NOT -- loaded successfully .. ";
    die( "<br><br>Query Closed !!! $error");
}

echo "Database loaded successfully ....";
于 2012-04-29T16:31:18.043 に答える