CodeIgniter 3.1.13 + PHP 8.1 で dbutil() が「DB driver がない」と怒られた話
CodeIgniter 3.1.13 を PHP 8.1 の環境で使っていて、
dbutil()
を呼び出すと **「DB ドライバがない」系のエラーが出ることがありました。
🐛 発生した問題
Model で $this->load->database()
しているのに、以下のようなエラーが出ました
原因は dbutil()
を呼び出すときに、明示的に $this->db
を渡していなかったことでした。
💡 原因の考察
CodeIgniter の dbutil
ライブラリは、$this->load->dbutil()
で読み込めますが、
PHP 8.1 では変数の null チェックや型の厳格さが増しているため、
内部的に $this->db
がうまく渡っていないと、正しく初期化できないようです。
✅ 解決方法
$this->load->dbutil($this->db);
このように 明示的に $this->db を渡すことで、DB ドライバを正しく認識させることができます!
📝 まとめ
- CodeIgniter 3.1.13 を PHP 8.1 で使うと、
dbutil()
がエラーになることがある - 原因は
$this->load->dbutil();
のように 明示的に DB 接続を渡していないこと - 解決方法は
$this->load->dbutil($this->db);
と DB 接続を明示的に渡すこと - エラーメッセージは「DB driver がない」「Invalid argument supplied for foreach()」など
Qiita 初投稿なので、誤りや改善点があればコメントで教えてください🙏
誰かの助けになれば嬉しいです😊