PHPでMySQLなどにPDO接続をすると、could not find driverのエラーが出る場合

PHPでMySQLなどにPDO接続をすると、could not find driverのエラーが出た時の調査・解消方法です。

まずphpinfoで、PDO driverが読み込まれているか確認します。

PDOの項のPDO driverがあれば、PDOが使用できます。
例えば、pdo_mysqlだと下のようになります。


no valueや使用したいpdoがなければ、PDOは使用できない状態です。

Linuxサーバの場合

php-pdoをインストールし、Webサーバを再起動します。

yum -y install php-pdo
yum -y install php-mysql

[参考記事] PDO_MYSQLをインストールする方法

Windowsサーバの場合の解消方法

PDOが使用できないときは、php.iniの設定を確認します。

[参考記事] php.ini が見つからない時

pdoはextension拡張で読み込まれます。
PHPの初期状態だと、下記のようになっています。

;extension=pdo_firebird
;extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
;extension=pdo_sqlite

使用したいpdoのコメントアウトを外します。
例えば、pdo_mysqlだと下のようになります。

;extension=pdo_mysql
 ↓
extension=pdo_mysql

設定を書き換えて、Webサーバ(Apache)を再起動します。

Windowsサーバの場合、.dllを付けないと読み込まれないといったことはありません。

extension_dirを確認します。
このフォルダに、読み込みたい.dllがなければ呼び出すことはできません。

PDO接続を確認するサンプルコード

<?php
$dsn = 'mysql:dbname=shop;host=127.0.0.1';
$user = 'root';
$password = 'password';

try {
    $dbh = new PDO($dsn, $user, $password);
    echo "接続に成功しました\n";
} catch (PDOException $e) {
    echo "接続に失敗しました\n";
    echo $e->getMessage() . "\n";
}

関連記事

スポンサーリンク

getElementsByTagName

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る