Windows環境で、PHPからMySQLにPDO経由で接続する場合に、[could not find driver]が表示される場合には、設定ファイルの”extension_dir”と”extension”を確認すると改善されます。
スポンサーリンク
PDOException
PHPからMySQLなどのデータベースに接続する際は、PDO経由で接続する方法が推奨されています。PHPをセットアップ時に、各データベース用のドライバーがコピーされているので、使わない理由がありません。
データベース接続時のエラーを受け取らないと、エラーの原因を特定する必要があるので通常はPDOExceptionで例外を検出します。
<?php try { $pdo = new PDO('mysql:host=localhost;dbname=db', 'administrator', 'password', array(PDO::ATTR_EMULATE_PREPARES =&amp;gt; false)); } catch (PDOException $e) { exit('データベース接続失敗。'.$e->getMessage()); } ?>
ドライバが見つからない
例外メッセージとして[could not find driver]が検出された場合には、PDOで接続するためのドライバーの設定が入っていないことが考えられます。
WindowsにPHPをセットアップしている場合には、既定値がオフになっているため「PHP.ini」を編集する必要があります。
PHPをセットアップしたフォルダー内の[php.ini]をメモ帳などで開いて、次の2カ所を確認して編集します。
1カ所目は、extension_dirを検索して
; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir ; extension_dir = "./" ; On windows: ; extension_dir = "ext"
コメントを外して、extension_dirを有効にします。こんな感じ
; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir ; extension_dir = "./" ; On windows: extension_dir = "ext"
2カ所目は、extension=pdo_mysqlを検索して
; Notes for Windows environments : ; ; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+) ; extension folders as well as the separate PECL DLL download (PHP 5+). ; Be sure to appropriately set the extension_dir directive. ; ; extension=pdo_mysql
コメントを外して、extension=pdo_mysqlを有効にします。こんな感じ
; Notes for Windows environments : ; ; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+) ; extension folders as well as the separate PECL DLL download (PHP 5+). ; Be sure to appropriately set the extension_dir directive. ; extension=pdo_mysql
設定が分かりやすい様に省略していますが、実際は、他データベース用のドライバ設定が項目がたくさん記載されてます。
PHPの設定を反映(Webサーバーの再起動など)して、エラーが改善されれば変更完了です。
Webサーバーの再起動
PHP側の設定を変更しても、すぐには反映されません。Webサーバーを再起動する必要があります。
Windows用のIISを利用している場合には[アプリケーション プール]を再起動(停止して開始)してもPHPの設定が反映されます。
スポンサーリンク
最後までご覧いただき、ありがとうございます。