PHPのエラー『Fatal Error: Class Not Found』の解決方法

  • 作成日 2025.03.17
  • php
PHPのエラー『Fatal Error: Class Not Found』の解決方法

PHPで開発中に『Fatal Error: Class Not Found』というエラーが発生することがあります。このエラーは、指定されたクラスが見つからない場合に発生します。この記事では、このエラーの原因と解決方法について詳しく説明します。

エラーの発生条件

『Fatal Error: Class Not Found』は、PHPが指定されたクラスを見つけられない場合に発生します。このエラーは、主に以下のような状況で発生します。

1. クラスファイルが読み込まれていない

クラスが定義されているファイルが読み込まれていない場合、このエラーが発生します。クラスを使用する前に、ファイルを読み込む必要があります。

<?php
// MyClass.phpが読み込まれていない
$obj = new MyClass(); // Fatal Error: Class 'MyClass' not found
?>

2. 名前空間の指定が正しくない

クラスが名前空間内で定義されている場合、名前空間を正しく指定しないとこのエラーが発生します。

<?php
namespace MyNamespace;

class MyClass {
    // クラスの内容
}

// 名前空間を指定せずにクラスを使用
$obj = new MyClass(); // Fatal Error: Class 'MyClass' not found
?>

3. オートローダーが正しく設定されていない

オートローダーを使用している場合、オートローダーが正しく設定されていないとこのエラーが発生します。

<?php
spl_autoload_register(function ($class) {
    include 'classes/' . $class . '.php';
});

$obj = new MyClass(); // Fatal Error: Class 'MyClass' not found
?>

4. クラス名のタイポ

クラス名にタイポがある場合、このエラーが発生します。クラス名は大文字と小文字を区別するため、正確に一致させる必要があります。

<?php
class MyClass {
    // クラスの内容
}

$obj = new myclass(); // Fatal Error: Class 'myclass' not found
?>

5. ファイルパスが正しくない

クラスファイルのパスが正しくない場合、このエラーが発生します。ファイルパスは相対パスまたは絶対パスで正確に指定する必要があります。

<?php
include 'incorrect/path/MyClass.php';

$obj = new MyClass(); // Fatal Error: Class 'MyClass' not found
?>

6. クラスファイルが存在しない

クラスファイルが存在しない場合、このエラーが発生します。ファイルが正しい場所に存在するか確認する必要があります。

<?php
include 'nonexistent/MyClass.php';

$obj = new MyClass(); // Fatal Error: Class 'MyClass' not found
?>

7. クラスが正しく定義されていない

クラスが正しく定義されていない場合、このエラーが発生します。クラス定義に誤りがないか確認する必要があります。

<?php
class MyClass {
    // クラスの内容
}

$obj = new MyClass(); // Fatal Error: Class 'MyClass' not found
?>

8. クラスが別のファイルで定義されている

クラスが別のファイルで定義されている場合、そのファイルを読み込まないとこのエラーが発生します。

<?php
// MyClass.phpが読み込まれていない
$obj = new MyClass(); // Fatal Error: Class 'MyClass' not found
?>

9. クラスファイルの読み込み順序が正しくない

クラスファイルの読み込み順序が正しくない場合、このエラーが発生します。依存関係があるクラスは、正しい順序で読み込む必要があります。

<?php
include 'MyClass.php'; // 依存するクラスが先に読み込まれている必要がある
include 'DependentClass.php';

$obj = new DependentClass(); // Fatal Error: Class 'DependentClass' not found
?>

10. クラスが正しいディレクトリに配置されていない

クラスが正しいディレクトリに配置されていない場合、このエラーが発生します。オートローダーが期待するディレクトリにクラスファイルを配置する必要があります。

<?php
spl_autoload_register(function ($class) {
    include 'classes/' . $class . '.php';
});

// クラスファイルが 'classes' ディレクトリにない
$obj = new MyClass(); // Fatal Error: Class 'MyClass' not found
?>

11. クラスが正しい名前空間に属していない

クラスが正しい名前空間に属していない場合、このエラーが発生します。名前空間の指定が正しいか確認する必要があります。

<?php
namespace MyNamespace;

class MyClass {
    // クラスの内容
}

// 別の名前空間でクラスを使用
namespace AnotherNamespace;
$obj = new MyClass(); // Fatal Error: Class 'AnotherNamespace\MyClass' not found
?>

12. クラスが正しいファイル名で保存されていない

クラスが正しいファイル名で保存されていない場合、このエラーが発生します。ファイル名はクラス名と一致させる必要があります。

<?php
// MyClass.phpというファイル名で保存されていない
$obj = new MyClass(); // Fatal Error: Class 'MyClass' not found
?>

これらの例を見てわかるように、『Fatal Error: Class Not Found』は、主にクラスの読み込みや定義に関する問題によって発生します。エラーメッセージをよく読み、該当する行を確認することで、問題を特定しやすくなります。