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

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


当前回答

我也有同样的问题。解决方案取决于操作系统。在我的情况下,我有debian,所以解决它:

更新我的php版本从(php5到php7) 安装php-mysql和php7.0-mysql 安装php-mysql 安装php7.0-mysql 我在/etc/php/7.0/apache2/php.ini中编辑了我的php.ini 取消注释行:extension=php_pdo_mysql.dll 然后重启apache: Service apache2 restart

这解决了我的问题

其他回答

有同样的问题,只是认为,网站是在MAMP的php下运行,但当你调用命令时,它运行mac的(如果没有bash路径修改)。当MAC没有这些扩展时,你会有问题。

运行PHP -i查找已加载的扩展,并安装那些您错过的扩展。 或者运行'/Applications/MAMP/bin/php/php5.3.6/bin/php artisan {your command}'来使用MAMP's

同样的问题,因为我忘记进入我的虚拟机。如果我像这样进入我的本地目录:

cd /www/homestead/my_project
php artisan migrate

这个错误就会出现。但它在我的虚拟机上运行

cd ~/homestead
vagrant ssh   
cd /www/homestead/my_project
php artisan migrate

对于使用MAMP的人,

如果你有

激活扩展= php_pdo_mysql.dll 设置你的扩展所在的正确路径,(例如:extension_dir = "C:\MAMP\bin\php\php7.4.1\ext\")

...你仍然不能在phpinfo()上看到pdo_mysql扩展,然后确保你从你的web服务器的文档根调用phpinfo(),而不是从其他地方。

如果你一直在其他地方调用它,那么你可能编辑了错误的php.ini文件:

Go to the document root of your web server (the path can be found in Mamp > preferences > Web server) Create a file named info.php in this folder, open it and paste <?php phpinfo(); ?> then save the file. Open the info.php you've just created in your browser (typically, http://localhost/info.php) Now search for "Loaded Configuration File" in the page and look at the path of your php.ini file --> It's probably a different php.ini that the one you've been originally editing. So open this file and make the edits (uncomment.., etc) Restart your server Check info.php again, the extension pdo_mysql should appear.

如果没有,如果你以前像我一样改变了你的服务器的文档根路径,我建议你重新设置为“C:\MAMP\htdocs”,并把你的网站放在这里,因为这真的解决了我的问题。

希望这能帮助到一些人。

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

Extension_dir = "c:\php5\ext"

如果你读了上面所有的答案,它仍然不工作…

确保PHP PDO连接字符串正常。不像我的:

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

错误消息中没有没有找到驱动程序的信息。

在重新安装所有可能的PDO和MySQL库后,我发现有“at start of my connection string”。