我刚刚安装了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安装有关吗?

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


当前回答

这个答案是mysql数据库和谁正在使用Xammp

我尝试了很多来自StackOverflow的代码,但主要问题是,我们必须检查这两个文件xammp php.ini文件和php文件夹php.ini文件,并取消注释这个扩展名“extension=pdo_mysql”在这两个。ini注释一个看起来像这样

;extension=pdo_mysql

在重新启动xammp并在终端中运行这些命令之后,只需从开头删除“;”分号

php artisan migrate:fresh --seed

这个命令将刷新你的迁移,也做了播种

关闭上次运行服务命令并再次运行它

php artisan serve

现在它为你工作了。

如果有任何错误,那么任何高级都可以更新这个答案

其他回答

还有一件事需要确认,因为有些人是从互联网上复制/粘贴示例代码来开始的。确保你在这里输入了MySQL:

... $dbh = new PDO ("mysql: ...  

在一些例子中可以看到

$dbh = new PDO ("dblib ...

无论我走到哪里,我都读到extension_dir的路径应该从ext更改为绝对路径。这对我很管用。然而,当我试图构建我同事PC的服务器时,我不得不让值到ext而不是放置一个绝对路径。

如果您确实放置了一个绝对路径,但仍然没有找到扩展名,请考虑同时尝试使用绝对路径和ext。

$DB_TYPE = 'mysql'; //Type of database<br>
$DB_HOST = 'localhost'; //Host name<br>
$DB_USER = 'root'; //Host Username<br>
$DB_PASS = ''; //Host Password<br>
$DB_NAME = 'database_name'; //Database name<br><br>

$dbh = new PDO("$DB_TYPE:host=$DB_HOST; dbname=$DB_NAME;", $DB_USER, $DB_PASS); // PDO Connection

这对我很管用。

我在尝试使用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中的配置

在我的情况下(Windows XP + Apache2.2 + PHP 5.4.31),我改变了PHPIniDir在httpd.conf来解决这个问题:

来自:

"C:\php5\" 

to:

"C:/php5/"