최근 Linux 서버에 프로젝트를 배포했을 때 일부 템플릿에서 실제로 "템플릿이 존재하지 않습니다: /Application/Admin/...."이라는 오류가 보고되는 것을 발견했습니다.
서버에 있는 파일을 확인해 보니 누락된 파일이 없는 것으로 나타났습니다. 파일을 다시 서버에 업로드했는데 여전히 오류가 발생했습니다. 이상해요. 코드 문제인 것 같아요.
신중하게 검사한 결과 템플릿의 파일 이름에 문제가 있는 것으로 확인되었습니다.
TP를 사용해 본 사람이라면 누구나 알고 있습니다. $this->display()를 사용할 때 thinkphp는 자동으로 메소드 이름을 템플릿 파일 이름으로 얻습니다. 예를 들어 getUserInfo 메소드는 getuserinfo.html 템플릿 파일을 사용합니다.
컨트롤러의 메소드에는 카멜 케이스 이름을 사용하고, 뷰 레이어의 템플릿 이름도 카멜 케이스 이름을 사용합니다. 예를 들어, getUserInfo 메소드는 getUserInfo.html의 템플릿 파일에 해당하지만! thinkphp가 $this->display()를 읽을 때 메소드 이름을 템플릿 이름으로 읽습니다. 이는 템플릿 이름이 getuserinfo.html이어야 함을 의미합니다.
Windows에서는 파일 이름이 대소문자를 구분하지 않지만 Linux에서는 대소문자를 구분하므로 오류가 보고됩니다.
해결책: 템플릿 파일 이름을 소문자로 변경하거나 $this->display('템플릿 파일 이름')(.html 제외)을 변경하세요.
세부사항이 성공과 실패를 결정합니다. 읽어주셔서 감사합니다.