본문 바로가기

Server/PHP

[Laravel][Error] config 파일을 읽어오지 못한다.

반응형

이전부터 계속 Laravel 서버에서 config 폴더에 새로운 config php파일을 만들어서 사용하려고 해도 도무지 값을 읽어오지를 못해서 난항을 겪고 있었다.

다른 app.php 나 mail.php 등 기존의 config 파일에 등록된 값은 컨트롤러나 모델 파일 내에서

$변수 = config('파일명.config변수') 로 값을 불러오면 잘 읽히는데 새로 만든 파일만 아예 읽히지를 않으니 속이 터지는거임..

사실 논리적으로 생각해봤을때 기존의 파일들을 읽어오는데는 문제가 없고, 새로 작성한 파일 자체를 인식을 못 한다면 새로 만든 config 파일을 어딘가에 config 파일이라고 명시해서 등록해둬야 한다는 뜻인데, 나름 찾는다고 열심히 찾아도 보이지를 않음......

그러다가 오늘 실마리를 찾아서 추가를 하려는데 해결이 안 되고 있다.

그래도 이제는 에러메세지라도 띄우니 이거로 어떻게 알음알음 찾아가고 있는 중이라 일단 시행착오 과정이라도 적어보려고 한다.

 

[case 1]

팀장님 왈, 새로 만든 파일을 등록해야 하는건 맞다고 한다. 허니 어디에 등록을 하느냐.

서버폴더 내 bootstrap/app.php 파일에 $app->configure('config파일명'); 으로 등록을 하거나, 경로가 있다면 해당 절대경로를 적거나 해서 경로를 통해 등록하라고 하신다.

이 때 config 파일의 위치는 root/config폴더 내에 만들게 되면 서버 컨피그 파일로 읽히기 때문에 인식을 못 하므로

app폴더 내에 config폴더 생성 후 그 위치(root/app/config/)에 파일을 생성하 라고 함

여기서

1. 이전 프로젝트에서도 우리가 사용한 config폴더 및 파일은 app폴더가 아닌 root/config 폴더 내에 있었음

   -> config폴더 내에 저장하는게 맞을 듯 함..

2. 여기에서 에러코드를 밷어내는데, 에러코드를 살펴보면 

Fatal error: Uncaught Error: Call to undefined method Illuminate\Foundation\Application::configure() in [서버폴더경로]\bootstrap\app.php:[오류발생한 라인] (이하생략)

라고, 즉 configuer() 함수를 찾을 수 없다는 내용.

더 알아보니 해당 방법은 laravel/lumen 서버에 해당하는 등록법이고, laravel은 다른 것 같다.

 

아니 근데 laravel 페이지에 가봐도 딱히 config 파일을 등록하라는 말이 없는데 나보고 어쩌란 말이냐 트위스트으으으으

 

보니까 ServiceProvider를 만들고, app.php에 등록해서 사용하라는 느낌의 github글도 본 것 같은데 그건 내 지향점,, 목표나 문제랑 거리가 좀 있는 것 같아서 기각.

아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ 진짜 답없네ㅐㄴ아ㅓㅣㅁ나ㅓㅣ

 

 

결국 끝끝내 답은 찾지 못 했고, 보니까 config파일을 읽지 못 하는게 아니라 그 전에도 작성했던 cache/config.php 파일의 문제인 것 같다.

실제 config 파일이 아니라, bootstrap/cache/config.php 에 캐싱되어있는 데이터를 읽어오는 것 같은데,

실제 파일의 데이터를 읽어오는게 아니라서 결국 사용할때마다 콘솔창에서 php artisan config:cache 명령어를 통해 config:clear 과정도 같이.. 아무튼 기존에 캐싱된 파일을 지우고 새로 업데이트 된 캐싱파일을 만들어서 사용해야 함..

근데 환장하는건 db설정은 또 config/database.php 파일에 내용을 그대로 불러오지를 않아서 문제임

계속 설정 비밀번호가 틀린 값으로 캐싱되니까 내가 지정한 config 파일을 수정하고, 그 값을 쓰고 싶으면 아티잔 명령어로 새로 캐싱파일을 만든 후에 db설정값도 바꿔줘야 하는 총체적 난국..

대체 뭐가 어디부터 잘못된건지 감도 안 온다..

 

반응형