2012-04-29 76 views
0

我想讓我的拳頭sqlite程序與本地主機上的PHP工作,但我不能得到它的工作。在我的機器上,我安裝了Sqlite3,並且所有的C/C++都可以正常工作。本地主機上的SQLite與PHP不起作用(Linux)

如果我移動創建的數據庫爲localhost,給讀/寫權限到數據庫文件,並嘗試通過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:17年2月8日
phpversion:5.3.2-1ubuntu4.14
linux Ubuntu 10.04

通過尋找phpinfo似乎SQLite, SQLite3和PDO_Sqlite已啓用。

任何幫助得到這個工作將不勝感激。

編輯: 解決方案是: '搭配chmod +烏戈RWX在/ var/WWW' :)
是sqlite_open後和PDO既可以創建數據庫。

+0

可能DUP http://stackoverflow.com/questions/1513849/error-file -is-encrypted-or-is-not-a-database – jdhartley

+0

@jdhartley:這個問題肯定存在,但是你提到的那個不是其中之一。這甚至不是同一個錯誤。 – 2012-04-29 16:16:21

+0

@sixfeetsix這不是一個錯誤嗎? PHP說文件是加密的或者不是數據庫,解決辦法是他需要使用PDO和PHP5。 – jdhartley

回答

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 ...."; 
+0

PDO不想工作太:SQLSTATE [HY000] [14]無法打開數據庫文件 數據庫 - NOT - 加載成功 查詢已關閉!!! –

相關問題