本地主机上的SQLite与php不起作用(Linux)


SQLite on localhost with php doesn't work (Linux)

我正在尝试让我的第一个sqlite程序与php在本地主机上工作,但我无法让它工作。在我的机器上,我已经安装了 Sqlite3,并且在 C/C++ 下一切正常。

如果我将创建的数据库移动到本地主机,请授予对数据库文件的读/写权限并尝试通过 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
PHP版本: 5.3.2-1ubuntu4.14
Linux Ubuntu 10.04

通过查看phpinfo,似乎SQLite,SQLite3和PDO_Sqlite已启用。

任何帮助使这项工作将不胜感激。

编辑:解决方案是:"chmod ugo+rwx/var/www" :)
之后,sqlite_open和PDO都可以创建数据库。

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