PDO SQLite 无法打开数据库

PDO SQLite Cannot Open Database

我在 Linux 环境中使用 PHP 没问题,但我正在开发一个 PHP 应用程序,该应用程序在 Windows Server 2012 上的 IIS 8 上使用 PDO 的 sqlite R2。

从数据库中读取工作正常;尝试插入或更新结果导致无用的错误,"unable to open database file"

工作正常的代码:

if (!($db = new PDO('sqlite:assets/database.db'))) { ?>
    ...
} else {
    $stmt="SELECT
             ... ";

    $stmt = $db->prepare($stmt);

    $stmt->execute(array(":person" => $this->uid));
}

无效的代码:

if (!($db = new PDO('sqlite:assets/database.db'))) { ?>
    ...
} else {
    $stmt = "INSERT INTO bills(date, label, categ, amount, timestamp) VALUES(?, ?, ?, ?, ?)";

    $stmt = $db->prepare($stmt);
    var_dump($stmt->errorInfo()); 
    // yields : array(3) { [0]=> string(0) "" [1]=> NULL [2]=> NULL }

    $stmt->execute([$fData['date'], $fData['label'], $fData['categ'], $fData['amount'], $fData['timestamp']]);
    var_dump($stmt->errorInfo()); 
    // yields : array(3) { [0]=> string(5) "HY000" [1]=> int(14) [2]=> string(28) "unable to open database file" }
}

我已经尝试过的事情:

非常感谢任何帮助!

原来问题出在 IIS 上 运行 PHP 中涉及的特定用户帐户。显然,用户是 IUSR,奇怪的是 不是 IIS_Users 组的一部分。因此,将 IUSR 添加到允许用户列表中解决了问题,如 this question 中所述,我希望几天前在搜索中出现它。

我遇到了同样的问题,但使用 Apache 时发现问题的根源是一样的。

Sqlite 将需要在目录中创建额外的文件来保存事务数据,并且由于它没有在当前文件夹中写入的权限,因此在正常读取时会出现该错误。