gpt4 book ai didi

带有 Zend Framework 的 PHP 无法启动 SQLite 数据库?

转载 作者:行者123 更新时间:2023-12-03 17:46:18 25 4
gpt4 key购买 nike

试图获得一个简单的 PHP/Zend 框架设置来创建一个 SQLite 数据库并对其进行操作。

<?php
require_once("Zend/Db.php"); // Zend framework
$db = Zend_Db::factory('Pdo_Sqlite', array("dbname" => "./test.sqlite3"));

$sql = "CREATE TABLE IF NOT EXISTS ".$db->quoteIdentifier("configs")." (".$db->quoteIdentifier("name")." TEXT NOT NULL PRIMARY KEY, ".$db->quoteIdentifier("value")." TEXT NOT NULL);";
echo $sql;
$db->query($sql);

SQL 回显为“ CREATE TABLE IF NOT EXISTS "configs" ("name" TEXT NOT NULL PRIMARY KEY, "value" TEXT NOT NULL);”,看起来是正确的。

但我得到一个' Zend_Db_Statement_Exception '带有消息'SQLSTATE [HY000]:一般错误:14无法打开数据库文件'。我试过去掉“ dbname”变量上的前导“./”,并确保 PHP 文件所在的文件夹对每个人都有写权限。我什至尝试使用“ touch test.sqlite3”创建文件,并确保每个人都可以写入。

这是使用 PHP v5.2.10

最佳答案

您的代码在这里工作(在 Windows 上)。所以array("dbname" => "./test.sqlite3")语法不是问题。和其他人一样,我认为这是一个许可问题。

一些想法:

  • 如果您使用 php 作为 apache 模块运行程序:如果从命令行运行,它是否工作?创建的文件的权限是什么?相应地调整对 apache 用户的权限。
  • 如果上述方法不起作用:strace您的脚本 ( strace php test.php ) 并检查输出是否存在权限错误。
  • ./test.sqlite3所在的目录要创建的对象必须是运行 php 的用户可读写的。有可读写的test.sqlite3 是不够的, 因为 sqlite 也会读写一个临时的 test.sqlite3-journal该目录下的文件。确保它是。
  • 尝试使用数据库名称的绝对路径。
  • 确保 pdopdo_sqlite加载扩展(检查 phpinfo() 的输出)。另外,请注意系统和 php 捆绑的 sqlite 库之间没有冲突。
  • 关于带有 Zend Framework 的 PHP 无法启动 SQLite 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2126131/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com