【问题标题】:PHP Fatal error: Uncaught PDOException: could not find driverPHP 致命错误:未捕获的 PDOException:找不到驱动程序
【发布时间】:2016-11-27 09:19:08
【问题描述】:

我一直在尝试使用 PDO 从 PHP 连接到 MySQL。但是,我收到此错误消息:

PHP 致命错误:未捕获的 PDOException:在 /home/abdullah/Documents/projects/cs50_radio/public/test.php:5 中找不到驱动程序 堆栈跟踪: #0 /home/abdullah/Documents/projects/cs50_radio/public/test.php(5): PDO->__construct('mysql:host=127....')

PDO 已启用并已安装。我检查了 phpinfo(),但我无法找出错误。

这是我用来连接的代码:

<?php
    $user = "root";
    $pass = "root";

    $dbh = new PDO("mysql:host=127.0.0.1;dbname=radio;port=3306", $user, $pass);
    //$dbh->query('INSERT INTO users (name) VALUES ("abdullah")');
    $dbh = null;
?>

我的项目文件夹是否应该包含任何其他驱动程序或文件?还是我的代码中遗漏了什么?

【问题讨论】:

  • new PDO("mysql:host=127.0.0.1;dbname=radio", $user, $pass);
  • 嗨,你确定mysql驱动已经加载了吗?你能检查你的 php.ini 吗?驱动程序行必须取消注释
  • 那是哪一行?
  • 你应该有extension=php_pdo_mysql.dll而不是;extension=php_pdo_mysql.dll(没有分号)

标签: php mysql pdo


【解决方案1】:

在我的 PHP 7.4 中,我没有得到 php.ini。相反,我有 php.ini-developmentphp.ini-production。所以,我只创建了一个新的 php.ini 文件并将配置复制到其中。

然后我取消了注释,把扩展目录改成了完整的安装路径。

 extension_dir = "C:/php/ext"

并且未注释:

 extension=pdo_mysql

最后,重启服务器。

【讨论】:

  • 我只是想在这里指出,在取消注释extension=pdp_mysql之后重新启动您的PHP服务器以使更改生效是很重要的。
【解决方案2】:

要使用不同的驱动程序,您需要安装它们。在 Windows 上,您只需取消注释 php.ini 中的一行:

extension=php_pdo_mysql.dll

在 Linux 上,您可以使用包管理器安装扩展:

sudo apt install php7.1-mysql

【讨论】:

  • 读取包列表...完成构建依赖树读取状态信息...完成php5-mysql已经是最新版本。 php5-mysql 设置为手动安装。 0 个已升级,0 个新安装,0 个要移除,95 个未升级。
【解决方案3】:

我遇到了同样的问题,这是由于我下载的 Apache 和 PHP 版本之间存在一些不兼容(不是立即明显)。尝试编写一个简单地创建一个新 PDO 对象的玩具 PHP 脚本,例如:

<?php

$dbname   = 'mydb';
$username = 'myuser';
$password = 'mypassword';
try {
    $pdo = new \PDO("mysql:host=localhost;dbname=$dbname", $username,  $password);
} catch (Exception $e) {
    print $e->getMessage() . "\n";
}
print "OK\n";

然后从命令行运行该脚本。如果您没有收到“找不到驱动程序”错误消息,则表明您的 PHP 和 Apache 版本不兼容。

【讨论】:

    【解决方案4】:

    好的,不知何故,我的扩展程序本身有问题。它有助于重新安装 MySQL 扩展。这是 PHP 7.3 的示例:

    sudo apt purge php7.3-mysql
    sudo apt install php7.3-mysql
    sudo service apache2 restart
    

    【讨论】:

    • 第三行帮助我做 sudo apt install php7.1-mysql
    猜你喜欢
    • 2012-06-11
    • 2017-05-13
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    相关资源
    最近更新 更多