【问题标题】:Uncaught exception 'PDOException' with message 'could not find driver' using Sqlite: mis-configuration?未捕获的异常“PDOException”和消息“找不到驱动程序”使用 Sqlite:配置错误?
【发布时间】:2012-08-17 17:37:07
【问题描述】:

我在 Windows XP 上的 Apache 2.2 上运行 PHP 5.4.5。两次:-) 我认为两台机器的设置相同,但一台机器工作正常,而另一台机器产生错误。 (它们都是开发机器——一台用于开发,另一台用于隔离测试)

我已经启用了扩展 php_pdo.dll、php_pdo_sqlite.dll 和 php_sqlite.dll(尽管其中只有 php_pdo_sqlite.dll 在 ext 目录中,而 pdo_sqlite.dll 实际上称为 php_sqlite3.dll - 但是我明白这就是应该的。)。

如果有帮助,这将在构建时失败。我用我自己的类包装 PDO:有问题的代码如下所示:

ADO extends PDO {

    function __construct ($cnString = 'sqlite:..') {
        parent::__construct ($cnString);
        $this->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
...

但这并不能解释发生了什么,因为正如我所说,这在游戏机上运行良好。

我想我只是失明了,看不到明显的东西 :-) 有什么想法吗,伙计们?

提前致谢。

【问题讨论】:

  • php.net/manual/en/pdo.getavailabledrivers.php - 你真的在那里看到 sqlite 吗?如果不是,您的问题不在您的代码中,而是在 PHP 配置中。
  • 在 phpinfo 中列出的扩展是否启用?
  • pdo::getAvailableDrivers 不返回任何内容。
  • 不,扩展名没有在 phpinfo 中列出。我刚刚注意到一些奇怪的事情:php 将 extension_dir 列为 C:\php,但 ini 文件将其定义为 C:\PHP\ext。我突然想知道我是否正在查看一个 dud ini 文件:PHP 在哪里找到它?
  • ...稍后:不,只有一个 php.ini,就在它应该在的地方。

标签: php sqlite pdo driver


【解决方案1】:

找到了!我是对的 - 很明显,我要瞎了:-)

在 Apache 的 httpd.conf 中,在标记为 #BEGIN PHP INSTALLER EDITS... 的部分中,PHPIniDir 已被注释掉。不知道为什么,与我无关。一定是一个不确定的安装。但是,我把它删掉了,现在一切都应该是这样了。

想知道为什么 PHP 没有抱怨没有 ini 文件吗? (错误日志中没有任何内容)。我认为未来值得关注。

感谢您提出的主要问题 :-)

【讨论】:

    【解决方案2】:

    切换到新的 PHP 版本后,我收到了相同的错误消息。 解决方案很简单,但也许将其发布在这里仍然可以帮助那些最终通过 Google 来到这里的人......

    我仍然必须在我的 php.ini 文件中取消 pdo_mysql / pdo_mysqlite 扩展名(取决于您使用的是 mysql 还是 myslq lite 版本) 所以不要转义这些行(去掉;)

    ;extension=php_pdo_mysql.dll
    ;extension=php_pdo_sqlite.dll
    

    【讨论】:

      猜你喜欢
      • 2012-06-11
      • 2014-01-23
      • 1970-01-01
      • 2015-01-03
      • 2015-03-12
      • 1970-01-01
      • 2017-05-13
      • 2015-06-22
      • 2020-01-21
      相关资源
      最近更新 更多