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 artisan migrate:[PDOException] 找不到驱动程序