gpt4 book ai didi

php - Laravel:连接到 sqlite 数据库抛出 "PDOException: Could not find driver"

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

我正在将 Laravel 项目部署到共享主机并添加了一个 php.ini:

extension=pdo.so
extension=pdo_sqlite.so
extension=sqlite.so

在 phpinfo 中,我还可以看到 sqlite 扩展已加载。使用以下代码片段测试连接到数据库也有效:
<?php
try {
$dbh = new PDO("sqlite:app/database/production.sqlite");
echo "Connected to database!";
}
catch(PDOException $e)
{
echo $e->getMessage();
}

但是,当尝试使用 Laravel 连接到数据库时,应用程序会抛出 PDOException 错误。

感谢您对此的任何帮助。提前致谢!

最佳答案

你得到的异常(exception):

PDOException: Could not find driver



每当找不到数据库的驱动程序时,由 PHP 的 PDO 给出。 PDO 需要一个驱动程序来操作不同的数据库(例如 Sqlite、Mysql 等)。 PDO 根据 DSN 查找驱动程序。在您的情况下,DSN 是:
sqlite:app/database/production.sqlite

并且对于驱动程序仅在第一个冒号(“ :”)之前的部分中查看:
sqlite

字符串 sqlite 用于查找 sqlite3 驱动程序(参见 PDO_SQLITE DSN in the PHP manual )。

在所有 PDO 中只有一个地方引发此异常 ( php 5.4 lxr),并且仅在 DSN 中冒号前的文本找不到驱动程序的情况下才会引发此异常。这也是您可以从错误消息中得到的结果。

由于您已经完成了 the best answer to "How to determine if PDO is enabled in PHP" 中概述的检查,因此您已经确定 PDO sqlite 扩展已被加载。

明确一点:包含 SQLite 的 PDO 驱动程序的 PHP 扩展名为 pdo_sqlite ,您已检查它是否已加载。

我唯一的解释是您确实加载了扩展,但 PHP 无法加载驱动程序。根据 PHP 来源( php 5.4 lxr),这可能有两个原因:
  • PDO 驱动程序需要不同的 PDO API 版本
  • 必须在加载任何 PDO 驱动程序之前加载 PDO

  • (技术上还有第三个原因,但应该忽略:将驱动程序添加到 PDO 驱动程序的哈希表失败,这是非常内部的,与 PDO 无关)

    由于加载了扩展,但没有找到驱动程序,我怀疑注册 PDO 驱动程序有问题。您应该检查 PHP 错误日志以了解启动错误。正如您所说,您在共享主机上遇到此问题,您需要联系支持人员,您可以在其中找到 PHP 错误日志。您正在寻找启动错误。有时这些错误也会显示在 Web 服务器的错误日志中,具体取决于所使用的 PHP SAPI 接口(interface)。

    还请提供来自 phpinfo() 的信息,以便提供额外的指导。根据您提供的信息,您可以放心 PDO 的 sqlite 驱动程序尚未加载。这是一个配置问题。

    关于php - Laravel:连接到 sqlite 数据库抛出 "PDOException: Could not find driver",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27658976/

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