【发布时间】:2018-11-08 07:43:19
【问题描述】:
我遇到了一个莫名其妙的问题。我之前已经正确设置了 PHP5/SQLite。但是,这一次它不起作用。
功能的基本期望是我使用以下方法建立通用数据库连接:
$dblocation = "path/to/database.db";
$dbConn = new PDO("sqlite:" . $dblocation);
从那里我得到了
连接失败:找不到驱动程序。
我已执行以下操作来解决此问题。
-
检查文档:
php -a -c /etc/php5/cli/php.ini和phpinfo()sqlite3 SQLite3 support => enabled SQLite3 module version => 0.7-dev SQLite Library => 3.8.2 -
检查可用的驱动程序:
php > print_r(PDO::getAvailableDrivers()); Array ( [0] => mysql [1] => sqlite ) php > -
使用 Apache2,启用
pdo和pdo_sqlite这样,我不需要取消注释 PHP.ini 文件中的扩展行。如果我取消注释,当您尝试加载两次时,我会收到预期的无法取消注册错误。
删除所有 PHP PDO 安装并重新安装。
删除 PHP 本身并重新安装。
这些都没有帮助。
就像我说的,我之前已经能够让它正常运行,所以我不确定这里出了什么问题。希望有人有比我能找到的更可靠的答案。从我看到的一切似乎都配置正确。
任何人都可以提供任何帮助,我们将不胜感激。
【问题讨论】:
-
它是命令行应用程序还是基于 Web 的应用程序?
-
你在ubuntu上安装
php5-sqlite包了吗?这不是 sqlite CLI。 -
@ÁlvaroGonzález - 这是一个 cron 作业每分钟调用的类文件。但是,如果我从命令行 sudo php 它,我会得到相同的行为。
-
@Parfait - 是的,我使用 apt-get 安装了 php5-sqlite 包。
-
@Parfait 谢谢。我将我的 apache2 目录复制为 nopache 是的...热闹...我还使用 sudo php5dismod pdo_sqlite 禁用了 php5 pdo_sqlite 模块。它没有从 conf.d 中的链接中删除自己,所以我手动删除了它。使用 php -a -c /etc/php5/nopache/php.ini,我得到 unregister_driver 错误。如果我删除了 ini 文件,我不会收到该错误。所以,看起来你是对的,问题出在 Apache2 文件中。在我的 nopache 目录中,我试图加载它两次或乱序。在 apache 中,它只是没有加载。对吗?