エラー内容
ブラウザでサイトにアクセスしたところ、以下のエラーが表示された。
An Error Was Encountered
Unable to load the requested class: {class名}
このときCodeIgniterのエラーログは以下の内容のみ。
ERROR - yyyy-MM-dd hh:mm:ss --> Unable to load the requested class: {class名}
通常のエラーログと違ってスタックトレースがなくこの1行だけなので、やや戸惑った。
そのため発生個所の特定も必要になる。
原因と対処
原因:ファイル名・クラス名の大文字小文字のtypoが原因で、クラスのロードに失敗していた。
対処:ファイル名・クラス名の大文字小文字を確認する。ファイル名は大文字にする。
環境
- CodeIgniter 3.1
- PHP 8.1.14
- EC2インスタンス(Amazon Linux 2)
- Apache 2.4.58
備考:ローカルのDocker環境ではこのエラーは起きず、EC2インスタンスでのみ発生した。
(エラー解消後も、ローカルで発生しなかった原因は調査しきれていない)
私の案件での具体的対処
私の案件ではモデルファイルに以下の記載があった。
$this->load->library('path/to/library/file/class_name');
しかし実際にclass_name.phpファイルは存在しており、ローカル環境でエラーは発生しない。
エラー文でググると参考サイトが出てきてくれたため、以下の対処で無事エラー解消できた。
- ファイル名の先頭を大文字に変更
class_name.php → Class_name.php - ロードするファイル名を同様に大文字に変更
path/to/library/file/class_name → path/to/library/file/Class_name
参考サイト
CodeIgniter Forums
SOLVED Unable to load the requested class: Globals
https://forum.codeigniter.com/showthread.php?tid=68373