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 =&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の設定が反映されます。
スポンサーリンク
最後までご覧いただき、ありがとうございます。
「PHPからMySQL 8.0へPDOで接続時に[could not find driver]になる場合の対処法」への1件のフィードバック