未找到 Fedora PDO 驱动程序


Fedora PDO driver not found

这真的困扰着我,我读过的所有问答都不能解决我的问题。我在 php 手册中读到,PDO"驱动程序从 PHP 5.1.0 开始默认启用"。我有 php 5.5.18。

php_info(( 显示:

PDO Driver for MySQL    enabled

我使用 fedora,并且:

yum install php-pdo

GIV:

php-pdo-5.5.19-3.fc20.x86_64 already installed and latest version

一些代码

$dsn = '
mysql:host=' . MY_HOST . '
;dbname=' . MY_DB . '
;charset=utf8;"';
$user = MY_USER;
$password = MY_PASS;

    try {
        $this->_dbh = new PDO($dsn, $user, $password);
        $this->_dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }

这给了我:

Connection failed: could not find driver

您是否重新启动了 Web 服务器?

当您发出时

yum install php-pdo

它给了

php-pdo-5.5.19-3.fc20.x86_64 already installed and latest version

这很好,但你需要发布:

sudo service httpd stop/start or restart

or sudo/etc/init.d/httpd stop/start restart

将扩展加载到 Apache WebServer 否则无论您对它做什么都不起作用。 驱动程序已启用,但您需要发出 Web 服务器重新启动以使其加载扩展!

我的DSN字符串中有换行符,我认为这就是问题所在。

我已将其更改为:

    $host = MY_HOST;
    $db = MY_DB;
    $user = MY_USER;
    $password = MY_PASS;
    try {
        $this->_dbh = new PDO(
            "mysql:host=$host;dbname=$db;charset=utf8;", 
            $user, 
            $password
            );
    } catch (PDOException $e) {
        printf(
            'Connection failed: %s<br>',
            $e->getMessage()
        );
    }