【发布时间】: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,就在它应该在的地方。