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

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


当前回答

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

其他回答

检查php配置文件中的extension_dir设置是否正确。尝试注释/取消注释一些扩展,看看它是否反映在phpinfo()上。 如果它没有,那么php配置文件不能加载(错误的位置)extension_dir被注释或设置到错误的位置。

对于那些使用Symfony2/3并想知道为什么会得到这个错误的人。如果您正在使用“mapping_types”,则可能会遇到此错误。原因是“mapping_types”被放在了错误的级别。例如:

doctrine:
  dbal:
    mapping_types:
        set: string

这个“mapping_types”必须放在这个级别:

doctrine:
dbal:
    #To counter the error caused by 'mapping_types'
    connections:
        default:
            server_version: %database_server_version%
            mapping_types:
                set: string

我希望这对你们有帮助

我在这里找到了解决方案:https://github.com/doctrine/DoctrineBundle/issues/327

您需要有一个名为pdo_mysql的模块。寻找以下在phpinfo(),

pdo_mysql

PDO Driver for MySQL, client library version => 5.1.44

Linux Mint

我在使用PhpBrew(5.5.9 / 7.0.14)并试图创建PDO连接时遇到了同样的问题。

在我尝试了这篇文章中的大部分解决方案后,我做了以下事情:

关闭PhpBrew 执行sudo apt-get install php7.0 (Linux Mint 17.2 / PHP7.0.16) -安装新的php版本

我有同样的错误共享主机使用cPanel。如果安装了mysqlnd,则默认安装pdo_mysql扩展。

但事实并非如此,我必须启用nd_pdo_mysql扩展来使用PDO。我使用PHP选择器GUI来更改它,但这是因为我懒得设置SSH连接。

O,忘记添加服务器是Apache和MariaDB(经常忘记,尽管MariaDB与MySql具有相同的父级,但在底层,一些功能可能会略有不同)。

PHP 8.0 与 Laravel 8.0 相关: