could not find driver と出力されてしまう

問題

授業内で提示されたサンプルコード()を使用した際に、以下のエラーメッセージが出力される。なお日本語テキスト(「接続に失敗しました」)は状況によるため、メッセージの本体である could not find driver に注目する。

接続に失敗しました: could not find driver
ドライバーが見つからないというメッセージ

原因

なんらかの理由で「古いpdo_mysqlドライバの入っていないイメージ」で開発コンテナーが起動している状態となっていることが原因。 よって、最新のDockerイメージに差し替えればよい。

この症状は、以前の授業でdensukest/xampp-devenv:alpineをロードしたことのある環境であれば発生しうる状況になっている。

対応

このエラーが発生した場合、最新のdensukest/xampp-devenv:alpineイメージに更新をかけることで解決する。

  1. 開発コンテナーに入っている場合、いったん開発コンテナーを終了してローカルに戻る(Ctrl-Shift-P--R eopen Folder Locally)

  2. ターミナルを開く

  3. 以下のコマンドを実行して、最新のイメージを取得する

    PS> docker image pull densukest/xampp-devenv:alpine
    
  4. 再度開発コンテナーを起動する、キャッシュを用いない形で再構築させる(Rebuild Container Without Cache)こと

    Rebuild Container Without Cache
  5. 問題が解消されていることを確認する(ページを開いてdbselect.phpを実行する等)

補足事項

本メッセージは、下記のPHPコードにより発生する、そのためエラーメッセージの出力コード(trycatchでの例外捕捉)を行っていないコードではメッセージが出力されないことに留意してください。

try {
    // PDOを用いてデータベースに接続する
    $pdo = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    // 接続できなかった場合のエラーメッセージ
    exit('データベースに接続できませんでした:' . $e->getMessage());
}