猫でもわかるWeb開発・プログラミング

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

PHP + Laravel on Docker で MySQL に接続しようとして could not find driver at ...

f:id:yoshiki_utakata:20210510220646p:plain

環境

  • Docker の php:7.4.16-apache を利用
  • Laravel を利用

エラー内容

[2021-08-24 10:43:16] production.ERROR: could not find driver at /app/laravel/vendor/laravel/framework/src/Illuminate/Database/Connection.php:671)

調査

qiita.com

この記事を見ると、この docker を使っているっぽい

github.com

infra/docker/php 以下を見てみると、 docker-php-ext-install pdo_mysql というコマンドがポイントな気がするので、実行してみた。

Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20190902/

このディレクトリにインストールされたっぽい。

確認してみると

root@dea5e3fd7e68:/usr/local/etc/php# ls  /usr/local/lib/php/extensions/no-debug-non-zts-20190902/
opcache.so  pdo_mysql.so  sodium.so

また、 php:7.4.16-apache の docker には、以下のような設定ファイルが配置されているが

root@dea5e3fd7e68:/usr/local/etc/php# ls
conf.d  php.ini-development  php.ini-production

このコマンドで mysql のドライバをインストールすると、自動的に conf.d 以下に mysql の設定が配置されるので、あとは docker を再起動したりすれば、 mysql が使えるようになります。