php中的PDOException“找不到驱动程序”
Posted
技术标签:
【中文标题】php中的PDOException“找不到驱动程序”【英文标题】:PDOException “could not find driver” in php 【发布时间】:2012-03-07 15:59:18 【问题描述】:我已经在我的 linux 系统上安装了 Lampp,我正在学习 symfony2,同时尝试使用 symfony2 命令创建模式
php app/console doctrine:schema:create
我收到以下错误消息:-
PDOException “could not find driver”
我也在 php.ini 文件中取消注释这一行 extension=php_pdo_mysql.dll
我试图查看和谷歌我的问题,但无法解决我的问题。当我运行php -m
命令时,我得到以下结果:-
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysql.so' - /usr/lib/php5/20090626+lfs/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysqli.so' - /usr/lib/php5/20090626+lfs/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/pdo_mysql.so' - /usr/lib/php5/20090626+lfs/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
date
dba
dom
ereg
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mbstring
mhash
openssl
pcntl
pcre
PDO
----
----
有没有办法解决这个问题?
【问题讨论】:
【参考方案1】:在 Ubuntu 中,在控制台中写入
sudo apt-get install php5-gd php5-mysql
它会起作用的
【讨论】:
php5-gd 我丢失了 =) 安装完所有扩展后,这是我的解决方案,谢谢! 这个成功了,我只需要调整版本sudo apt-get install php5.6-gd php5.6-mysql
【参考方案2】:
希望您在 localhost 中运行您的项目。在您的项目文件夹 app/config 中有一个名为 parameters.ini 的文件,确保您的 Mysql 数据库连接配置正确。如果您使用的是 mysql 请参阅database_driver=pdo_mysql
是它的驱动程序。
下面是一个例子。
database_driver = pdo_mysql
database_host = localhost
database_port =
database_name = databasename
database_user = msqlusername
database_password = mysqlpassword//if not make blank
mailer_transport = smtp
mailer_host = localhost
mailer_user =
mailer_password =
locale = en
secret = ThisTokenIsNotSoSecretChangeIt
希望对你有帮助。
【讨论】:
是的,这有帮助,但是我刚刚改变了这两件事 database_host="127.0.0.1" database_port="3306" 并且它起作用了 除了xampp之外,我还在我的ubuntu matchine上安装了mysql【参考方案3】:您需要有一个名为pdo_mysql
的模块。
在phpinfo()
输出中查找以下内容,
pdo_mysql => MySQL 的 PDO 驱动程序,客户端库版本 => 5.1.44
要安装 pdo_mysql,您需要这样做:
pecl install pdo
pecl install pdo_mysql
然后将以下内容添加到您的 php.ini
文件中:
extension=pdo.so
extension=pdo_mysql.so
【讨论】:
嗯,好的。我以为你在linux上。底线是你需要 pdo_mysql 模块来让你的 PDO 工作正常。我不知道lampp。它可以像检查 pdo_mysql dll 文件是否存在一样简单。在您的 ini 文件中取消注释 pdo_mysql.dll 包后重新启动您的 Apache 服务。 我正在使用lampp。一个以自己的方式而不是在默认文件夹中安装 php、appache 和 mysql 的包。这些 cmds 给我错误配置:错误:在错误下找不到 MySQL 头文件:`/tmp/pear/temp/PDO_MYSQL/configure' failed @Jaspreet Chahal,你的答案在 Linux 上有效吗?我对 OP 有同样的问题,但我没有编辑php.ini
文件的权限。如果您的回答确实有效,我会请求我的主管允许将其包含在php.ini
文件中。【参考方案4】:
brew install php70-pdo-pgsql
如果您在 mac 上使用 brew 安装了 php7,并根据您安装的内容更改 php 版本。
【讨论】:
谢谢这对我有帮助。【参考方案5】:如果您使用的是 XAMPP,则在 php.ini 文件第 897 行(取决于版本)中,
;extension=php_pdo_pgsql.dll
取消注释,如下图所示
extension=php_pdo_pgsql.dll
在 php.ini 文件第 897 行,然后重新启动 XAMPP。
【讨论】:
天哪,最后感谢您!我在网上寻找这个最终对 Windows 系统正确的答案....【参考方案6】:我的服务器中安装了两个 PHP 版本 PHP 5.6 和 PHP 7
当我运行命令php app/console doctrine:schema:update
时出现错误:[PDOException] could not find driver
我通过指定 PHP 版本解决了这个错误:
php5.6 app/console doctrine:schema:update
【讨论】:
就我而言,我是这样解决的:php7.0 app/console dictionary:schema:update --force【参考方案7】:看起来您的安装缺少实现 mysql 连接所需的 .so 文件。如果您使用包管理系统来安装 PHP,那么请确保您已经安装了所有必要的子模块(在这种情况下,我认为您将需要 mysql-dev 和各种 PHP PDO 模块),尽管这些依赖项应该有已由包管理器为您解决。
如果您没有通过包管理器,那么您必须从源代码编译所需的 .so 文件。
【讨论】:
【参考方案8】:我遇到了同样的问题,对我来说,它有多个 PHP 版本。 所以指定PHP的完整地址解决了这个问题。
【讨论】:
【参考方案9】:添加到 Jaspreet Chahal 的答案。 将 PDO 安装为共享模块时,需要更新 php.ini 文件,以便在 PHP 运行时自动加载 PDO 扩展。您还需要在那里启用任何特定于数据库的驱动程序;确保它们列在 pdo.so 行之后,因为必须在加载特定于数据库的扩展之前初始化 PDO。如果您静态构建 PDO 和特定于数据库的扩展,则可以跳过此步骤 (Source)。 我的意思是,它应该看起来像这样 -
extension=pdo.so
应放在不同数据库驱动程序的扩展之前。
【讨论】:
【参考方案10】:也许你忘记安装学说/dbal
composer update
composer require doctrine/dbal
如果它不起作用,请转到您的 php.ini(根据当前版本) 并删除 ";"
;extension=pdo_mysql.so
【讨论】:
以上是关于php中的PDOException“找不到驱动程序”的主要内容,如果未能解决你的问题,请参考以下文章
php artisan migrate:[PDOException] 找不到驱动程序