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

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


当前回答

代码中的dsn显示您正在尝试连接mysql驱动程序。您的错误消息表明该驱动程序不可用。

检查你的服务器上是否安装了mysql扩展。

在Ubuntu/Debian中,你可以用以下方法检查包:

dpkg --get-selections | grep php | grep mysql

如果没有php5-mysql包,请安装。

在Ubuntu/Debian中,你可以使用:

PHP5: sudo apt-get install PHP5 -mysql PHP7: sudo apt-get安装php7.0-mysql

最后,为了让它工作,你需要重新启动你的web服务器:

Apache: sudo /etc/init.d/apache2 restart Nginx: sudo /etc/init.d/nginx restart

其他回答

我在使用单独的php.ini运行测试时遇到了同样的问题。我必须将这些行添加到我自己的php.ini文件中:

[PHP]
extension = mysqlnd.so
extension = pdo.so
extension = pdo_mysql.so

注意:正是这个顺序

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

Extension_dir = "c:\php5\ext"

在我的例子中,我使用PDO和php-cli,它工作得很好。

只有当我试图从apache连接时,我得到了“丢失的驱动程序”问题,这是我不太明白的。

一个简单的apt-get install php-mysql解决了这个问题。Ubuntu 16.04 / PHP7。学分转到选定的答案&伊万的评论)

希望能有所帮助。

检查模块是否可用php -m | grep pdo_mysql。

如果没有,对于PHP 7.2,可以使用sudo apt install php7.2-mysql安装相关包。

在其他PHP版本和包管理器上使用类似的命令。

正在调用不正确的PHP安装

我也遇到过同样的问题。我希望这能帮助到和我有类似问题的人。

场景

OS = Windows 10  
Platform = XAMPP  
PHP Version = 7 (Multiple Version seem to have been installed in the PC)  

我在公用文件夹中创建了phpinfo.php文件,并运行phpinfo()来查找我的php.ini文件的位置。

php.ini Location = c:\xampp\php\php.ini

问题 调用c:\xampp\htdocs> php -v返回php 7.2.3,但phpinfo.php显示php 7.2.2。

解决方案 而不是打电话

php artisan migrate:install   

它给了我这个错误,我用了

c:\xampp\php\php artisan migrate:install

这招奏效了。