我刚刚安装了Debian Lenny与Apache, MySQL和PHP,我收到一个PDOException无法找到驱动程序。

这是它所引用的特定代码行:

$dbh = new PDO('mysql:host=')。DB_HOST。”;dbname = '。Db_name, db_user, db_pass)

DB_HOST、DB_NAME、DB_USER和DB_PASS是我已经定义的常量。它在生产服务器(以及我之前的Ubuntu server设置)上运行良好。

这与我的PHP安装有关吗?

在网上搜索也没有帮助,我得到的都是专家交流和例子,但没有解决方案。


当前回答

在我的Windows机器上,我必须在php.ini中给出扩展名目录的绝对路径:

Extension_dir = "c:\php5\ext"

其他回答

在我的情况下,我的DSN字符串是不正确的,特别是它不包含mysql://。我本希望看到一个不同的错误消息,也许类似于“DSN字符串没有指定驱动程序/协议”。

将mysql://添加到DSN字符串的开头就解决了这个问题。

你检查你的php.ini(检查正确的位置与phpinfo()),如果MySQL和驱动程序安装正确?

我在尝试使用pdo_sqlite时遇到了相同的异常。问题是自动创建的20-pdo_sqlite.ini和20-sqlite3.ini符号链接(在/etc/php5/mods-enabled中)被破坏了。

删除损坏的符号链接,并手动添加它们:

Sudo ln -s /etc/php5/mods- available /pdo_sqlite.ini /etc/php5/mods-enabled/20-pdo_sqlite.ini Sudo ln -s /etc/php5/mods- available /sqlite3.ini /etc/php5/mods-enabled/20-sqlite3.ini

修复了问题。

注意:这将不适用于旧的php版本,因为他们不寻找/etc/php5/mods-enabled中的配置

在我为了安装php7包而删除了php5包(包括所有的驱动程序)之后,我也遇到了同样的问题。我实际上安装了php7包,没有mysql模块。

我在终端中输入:

1) $ apt-cache搜索php7 上面列出了我找到的所有模块,

PHP的MySQL模块

2)安装php7.0-mysql

就是这样。它适用于我的linux系统。

(使用合适的PHP版本,你的可以是php5)

我的解决方案是在安装php时,没有正确配置环境变量和php.ini文件。做这两个修正未注释的de line extension = pdo_mysql。所以工作