PHP致命错误:未捕获的PDOException:找不到驱动程序。

11

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

PHP致命错误:无法在/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); - Alive to die - Anant
你好,你确定已经加载了mysql驱动程序吗?你能在php.ini文件中检查一下吗?驱动程序那一行必须是没有被注释掉的。 - Max
那是哪一行? - A.Emad
1
你应该拥有 extension=php_pdo_mysql.dll 而不是 ;extension=php_pdo_mysql.dll(没有分号) - Max
4个回答

18

要使用不同的驱动程序,您需要安装它们。

在 Windows 上,您只需取消注释 php.ini 中的一行即可:

extension=php_pdo_mysql.dll

在 Debian 或类似的 Linux 发行版上,您只需使用软件包管理器安装扩展:

sudo apt update
sudo apt install php7.1-mysql

记得安装正确版本。


读取软件包列表... 完成 正在构建依赖关系树... 正在读取状态信息... 完成 php5-mysql 已经是最新版本。 php5-mysql 设置为手动安装。 0 个升级,0 个新安装,0 个要移除,95 个未升级。 - A.Emad

6

我遇到了同样的问题,原因是我下载的Apache和PHP版本之间存在一些不兼容性(不是立即显而易见的)。尝试编写一个简单的PHP脚本,仅创建一个新的PDO对象,例如:

<?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版本不兼容。


5
在我的 PHP 7.4 中,我没有找到 php.ini 文件。相反,我有 php.ini-developmentphp.ini-production 两个文件。因此,我只创建了一个新的 php.ini 文件,并将配置信息复制进去。
然后,我取消了注释并将扩展目录更改为完整的安装路径。
 extension_dir = "C:/php/ext"

取消注释:

 extension=pdo_mysql

最后,重新启动服务器。


我想在这里指出,取消注释 extension=pdp_mysql 后重启 PHP 服务器非常重要,以便让更改生效。 - Marcel

0

好的,某种程度上我遇到了扩展本身的问题。重新安装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之后帮助了我。 - TizonDife Villiard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接