PHP PDOException 找不到驱动程序

Posted

技术标签:

【中文标题】PHP PDOException 找不到驱动程序【英文标题】:PHP PDOException Could not find driver 【发布时间】:2016-08-30 06:01:55 【问题描述】:

我安装了 Laravel 并从我的 git 服务器克隆了一个 repo 以在暂存服务器上使用。安装完所有必需的工具后,我想迁移数据库。我现在得到的错误是:

[2016-05-04 16:54:51] local.ERROR: 异常 'PDOException' 与 消息“找不到驱动程序” /var/www/mfserver/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:55

#1 /var/www/mfserver/vendor/laravel/framework/src/Illuminate/Database/Connectors/mysqlConnector.php(22): Illuminate\Database\Connectors\Connector->createConnection('mysql:host=46.1...', Array, Array)
#2 /var/www/mfserver/bootstrap/cache/compiled.php(11439): Illuminate\Database\Connectors\MySqlConnector->connect(Array)
#3 /var/www/mfserver/bootstrap/cache/compiled.php(11435): Illuminate\Database\Connectors\ConnectionFactory->createSingleConnection(Array)
#4 /var/www/mfserver/bootstrap/cache/compiled.php(11350): Illuminate\Database\Connectors\ConnectionFactory->make(Array, 'mysql')
#5 /var/www/mfserver/bootstrap/cache/compiled.php(11305): Illuminate\Database\DatabaseManager->makeConnection('mysql')
#6 /var/www/mfserver/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php(171): Illuminate\Database\DatabaseManager->connection(NULL)
#7 /var/www/mfserver/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php(139): Illuminate\Database\Migrations\DatabaseMigrationRepository->getConnection()
#8 /var/www/mfserver/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(393): Illuminate\Database\Migrations\DatabaseMigrationRepository->repositoryExists()
#9 /var/www/mfserver/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(100): Illuminate\Database\Migrations\Migrator->repositoryExists()
#10 /var/www/mfserver/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(58): Illuminate\Database\Console\Migrations\MigrateCommand->prepareDatabase()
#11 [internal function]: Illuminate\Database\Console\Migrations\MigrateCommand->fire()
#12 /var/www/mfserver/bootstrap/cache/compiled.php(1187): call_user_func_array(Array, Array)
#13 /var/www/mfserver/vendor/laravel/framework/src/Illuminate/Console/Command.php(150): Illuminate\Container\Container->call(Array)
#14 /var/www/mfserver/vendor/symfony/console/Command/Command.php(256): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 /var/www/mfserver/vendor/laravel/framework/src/Illuminate/Console/Command.php(136): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#16 /var/www/mfserver/vendor/symfony/console/Application.php(841): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#17 /var/www/mfserver/vendor/symfony/console/Application.php(189): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Database\Console\Migrations\MigrateCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#18 /var/www/mfserver/vendor/symfony/console/Application.php(120): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /var/www/mfserver/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(107): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /var/www/mfserver/artisan(36): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

我安装了 php-mysql,但我不明白为什么缺少驱动程序。

【问题讨论】:

看起来您正在使用 Web 服务器(如 Apache 或 nginx)?如果是这样,请重新启动该 Web 服务器并重试。 工作得非常好!谢了! 您是否配置了 .env 文件以便它可以连接到正确的数据库? 只是为了我的学习经验:你在哪里看到的? @sesc360 在您发布的错误日志中,这些文件位于 /var/www/ 文件夹中,这是许多 Web 服务器的默认路径。安装 PHP 模块或更改 PHP 配置时,您需要重新启动 Web 服务器以使这些更改生效。 【参考方案1】:

我在我的 Win 8.1 机器(64 位)中遇到了同样的问题,我根据 *** 中的其他答案尝试了几乎所有可能的修复。最后它解决了,但我不知道哪个修复解决了我的问题。我做了以下来解决这个问题。

    启用 php.ini 文件中的所有 pdo 扩展(仍然无法正常工作)

    将php.ini文件作为phpForApache.ini复制粘贴到我的php7的同一个目录下(还是不行)

    composer 已卸载并再次安装最新的 php7,因为它是 php 路径(仍然无法正常工作)

    关闭命令提示符并在 windows power shell 中运行相同的 php artisan migrate 查询(现在可以使用)

我仍然不知道哪个步骤可以解决我的问题,也许你可以尝试所有这些步骤。

【讨论】:

以上是关于PHP PDOException 找不到驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

PHP PDOException 找不到驱动程序

php artisan migrate:[PDOException] 找不到驱动程序

PDO:未捕获的 PDOException:找不到驱动程序

PDO 扩展配置 - 我在我的 PHP 应用程序中不断收到 PDOException“找不到驱动程序”

PDOException“找不到驱动程序”

Laravel 和 Postgresql 带有消息“找不到驱动程序”错误的 PDOException