Laravel でcould not find driver エラー にハマる

ちょっとハマったので、未来の自分にメモです。
サラリーの仕事でLaravelを使って、複数通販サイトの在庫同期をやっているのですが
少し前にログを見たら定期実行が止まっておる・・・

エラーログを見ると could not find driver。
そんなバカな・・・ という事で調べて直す。

広告

原因はUpdate

タイミングからするとubunntuのアプデのタイミングッポイ。
今まで動いていたのに could not find driver って・・・ 分からん。

色々調べてみると php.ini でpdo_mysqlのエクステンションのコメントを外すと直る とありましたので、
php.iniの場所を調べます。

# php -i | grep php.ini
Configuration File (php.ini) Path => /etc/php/8.1/cli
Loaded Configuration File => /etc/php/8.1/cli/php.ini

ん・・・

8.1だと・・・・
ウチで使ったのは8.0だぞ・・・

まぁ 良いやと思って、php.iniを変更して、Apache再起動。

そんでコマンド叩いてみると

PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_mysql' (tried: /usr/lib/php/20210902/pdo_mysql (/usr/lib/php/20210902/pdo_mysql: cannot open shared object file: No such file or directory), /usr/lib/php/20210902/pdo_mysql.so (/usr/lib/php/20210902/pdo_mysql.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

怒られました。

もしやと思ってphpinfoで調べたら、やっぱりlaravelをインストした時はphp8で、
アプデの時に8.1がインストされたようです。

# php -v
PHP 8.1.1 (cli) (built: Dec 31 2021 07:26:20) (NTS)

という事でバージョン変更

# update-alternatives --list php
/usr/bin/php.default
/usr/bin/php8.0
/usr/bin/php8.1

存在してるphpを見てみるとphp8.0がある。

# sudo update-alternatives --config php
There are 3 choices for the alternative php (providing /usr/bin/php).

  Selection    Path                  Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php.default   100       auto mode
  1            /usr/bin/php.default   100       manual mode
  2            /usr/bin/php8.0        80        manual mode
  3            /usr/bin/php8.1        81        manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/php8.0 to provide /usr/bin/php (php) in manual mode

# php -v
PHP 8.0.14 (cli) (built: Dec 20 2021 21:22:57) ( NTS )

そんでコマンド叩いたら無事に動きました。
あー良かった。


おすすめのコンテンツ

広告

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください