고양이 여름이의 지식채널

Laravel ClassNotFoundException 에러 원인 및 해결방법 본문

Programming/Laravel

Laravel ClassNotFoundException 에러 원인 및 해결방법

썸머캣 2023. 2. 3. 00:26

ClassNotFoundException

API 개발중에 자꾸 이 오류가 나서 해결책 정리함.

 

해당 오류는 Laravel의 지정된 클래스 이름에 대한 클래스 정의를 찾을 수 없을 때  발생합니다. 즉, 프로젝트내에 존재하지 않거나 자동으로 로드할 수 없는 클래스를 인스턴스화하려고 할때 발생합니다.

 

 

예시.

다음과 같이 정의된 컨트롤러 클래스가 있는 경우

namespace App\Http\Controllers;

class PostController
{
    ...
}

 

그리고 route에서 이 클래스를 다음과 같이 사용하려고 합니다.

Route::get('/post/{id}', 'PostControllers@show');

클래스의 올바른 이름이 PostController이므로 Route에서 PostControllers 클래스를 찾을 수 없기 때문에 ClassNotFoundException 오류가 발생.

 

즉 class를 못찾는다는 소리입니다.

 

 

반응형

 

해결방법.

  • 해당 클래스의 철자와 네임스페이스를 확인. 클래스가 존재하고 올바른 네임스페이스에 정의되어 있는지 확인.

    필요한 경우 코드에서 클래스의 전체 네임스페이스를 사용합니다.

예를들면

Route::get('/post/{id}', 'App\Http\Controllers\PostController@show');

 

  • 위에꺼가 안되면..composer dump-autoload 명령을 실행하여 클래스 autoload를 재생성하고 필요한 모든 클래스가 올바르게 로드되었는지 확인합니다.

 

또한 Laravel의 route cache 는 잠재적으로 ClassNotFoundException 오류를 발생시킬 수 있습니다.

php artisan route:cache 명령을 실행하면 컴파일된 경로 파일이 캐시되지만 컨트롤러 클래스가 아직 메모리에 로드되지 않았을 수 있습니다. 따라서 사용자가 경로에 액세스하려고 할 때 Laravel은 컨트롤러 클래스를 찾을 수 없기 때문에 ClassNotFoundException 오류를 발생시킬수가 있습니다.

 

이 경우 php artisan route:clear cache를 초기화 해줘야 합니다.

php artisan route:clear ##route 캐시 초기화

php artisan route:cache ##route 캐시 재생성

 


Laravel - wsl 과 도커로 실행하는 방법 (라라벨 sail)

 

Laravel - wsl 과 도커로 실행하는 방법 (라라벨 sail)

Laravel Sail은 Laravel의 기본 Docker 개발 환경과 상호 작용하기 위한 간단한 명령줄 인터페이스입니다. 윈도우 환경에서 실행하기 위해서는 wsl과 docker가 설치가 되어있어야 합니다. wsl -wsl는 리눅스

summer-cat93.tistory.com

 

 

728x90
반응형
Comments