マイグレーション実行時のcould not find driverの対処法

## はじめに
あくまでPHP（Laravel）のマイグレーション時に発生した問題であり、他の開発環境では対応などが異なる場合があります。

**Docker開発環境**
php:8.1-fpm
mysql:5.7.36

**バージョン**
PHP | 8.1.27
Laravel | 10.46.0
MYSQL | 5.7.36

## 問題
docker-composeで立てた、php-fpmのコンテナにログインしてマイグレーションを実行。
```PHP:Command
docker-compose exec php bash 
php artisan migrate
```


以下の問題が発生した。MYSQLドライバーがインストールされていないっぽい。
```
  Illuminate\Database\QueryException 

  could not find driver (Connection: mysql, SQL: select table_name as `name`, (data_length + index_length) as `size`, table_comment as `comment`, engine as `engine`, table_collation as `collation` from information_schema.tables where table_schema = 'mysql_test_db' and table_type in ('BASE TABLE', 'SYSTEM VERSIONED') order by table_name)

  at vendor/laravel/framework/src/Illuminate/Database/Connection.php:829
    825▕                     $this->getName(), $query, $this->prepareBindings($bindings), $e
    826▕                 );
    827▕             }
    828▕ 
  ➜ 829▕             throw new QueryException(
    830▕                 $this->getName(), $query, $this->prepareBindings($bindings), $e
    831▕             );
    832▕         }
    833▕     }

      +36 vendor frames 

  37  artisan:37
      Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

```

そのためphp-mysqlのパッケージをインストールしようとするものの、「php-mysqlパッケージが見つからなかった」というエラーが発生した。
```php:Command
root@c47d6af87d0a:/var/www/html/LaravelProject$ apt-get install php-mysql
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package php-mysql is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'php-mysql' has no installation candidate
```

## 解決方法
以下のPHP拡張機能をインストールするためのコマンドをphp-fpmのコンテナ内で実行。
[mysqliは、PHP5.5以降で非推奨、7.0で削除となったmysql_系のメソッドの代替らしいです。](https://qiita.com/makimoch/items/00dd94278ed1a8f8478a)

```PHP:Command
docker-php-ext-install mysqli pdo_mysql
```
もしくはDockerfile内に上記のコマンドを追加すれば、ビルド時に実行される。
```PHP:docker/php/Dockerfile
RUN apt-get update \
 && apt-get install -y zlib1g-dev mariadb-client vim libzip-dev nodejs npm \
 && docker-php-ext-install mysqli pdo_mysql \  #この行を追加
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/*
```

下記のような表示が最後のほうの行で確認できればインストールは成功
```
Build complete.
Don't forget to run 'make test'.

+ strip --strip-all modules/pdo_mysql.so
Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20210902/
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
find . -name \*.lo -o -name \*.o -o -name \*.dep | xargs rm -f
find . -name \*.la -o -name \*.a | xargs rm -f
find . -name \*.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp.la      modules/* libs/*
rm -f ext/opcache/jit/zend_jit_x86.c
rm -f ext/opcache/jit/zend_jit_arm64.c
rm -f ext/opcache/minilua
```

マイグレーションを再度実行して以下のように出力されれば解決。
```
root@4c276abfd82c:/var/www/html/LaravelProject$ php artisan migrate

   INFO  Preparing database.  

  Creating migration table ..................................................................................... 42ms DONE

   INFO  Running migrations.  

  2014_10_12_000000_create_users_table ......................................................................... 39ms DONE
  2014_10_12_100000_create_password_reset_tokens_table .......................................................... 7ms DONE
  2019_08_19_000000_create_failed_jobs_table ................................................................... 17ms DONE
  2019_12_14_000001_create_personal_access_tokens_table ........................................................ 17ms DONE
```


## 参考記事
[php公式dockerイメージで使えるphp拡張を調べる](https://qiita.com/vitway/items/660f9121a9c6afbf1047)
[クイックリファレンス(PHP公式イメージ)](https://hub.docker.com/_/php)
[DockerでPHPとMySQLのシンプルすぎる環境構築を行う](https://qiita.com/2san/items/662a2b90fc8a94fa9a62)
[mysqli の忘備録 -PDOとmysqliの違い-](https://qiita.com/makimoch/items/00dd94278ed1a8f8478a)
[MySQL 改良版拡張モジュール](https://www.php.net/manual/ja/book.mysqli.php#book.mysqli)