모듈에서 include 를 사용하려면 어떻게 해야할까요?
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.2 |
안녕하세요.
모듈 A가 있고
모듈 A 에서 abc.php 를 인크루드 하려고합니다.
추가로 abc.php 파일에는
require("def.php");
이런식으로 파일이 구성이 되어 있습니다.
모듈내에서 인크루드는
require_once _XE_PATH_.'/module/a/abc.php';
로 하는게 맞을까요?
검색해보니 이방법인것 같긴한데 전체 경로도 넣어보고 절대경로 상대경로 다 넣어보았지만
500 에러가 발생을하네요.
관련하여 도움 부탁드립니다.

톰캣
Lv. 11
시대의 흐름에 뒤떨어지지 않도록 아주 천천히지만 노력하고 있습니다.
댓글 11
require_once _XE_PATH_.'/module/a/abc.php'; 는 작동하는 것 같긴 하네요.
다른걸 넣었을때는 인크루드 관련에러가 나왔는데
위처럼 넣으니 다음줄로 가는것으로 봐서는 작동하는 것 같긴 하네요.
require_once _XE_PATH_.'/module/a/abc.php';이 올바른 방법인지 아닌지 궁금합니다.
에러메세지, 해당 코드들 인클루드 이후 코드 에러발생코드위치 다알아야 정확한 원인을 파악할 수 잇지 스무고개 퀴즈 계속 내심 곤란합니다. 에러메세지부터 파악하세요
모듈에서 인크루드 하는 방식이
require_once _XE_PATH_.'/module/a/abc.php';이 맞는지 궁금합니다
다른 몇몇 테스트에서는 아래와 같이 에러가 났었고
[php7:error] [pid 11647] [client 아이피:6981] PHP Fatal error: require_once(): Failed opening required 'https://www.사이트.com/modules/a/abc.php' (include_path='.:/usr/share/pear:/usr/share/php') in /https://www.사이트.com/modules/a/모듈.php on line 199, referer: http://www.사이트.com/글쓰기페이지
계속 테스트를 해보니
require_once _XE_PATH_.'/module/a/abc.php';에서는 안나는것 같습니다.
인크루드 에러인것 같은데 여러종류를 시도하면서 위 방법을 사용하는게 맞는지 궁금합니다.
아래 기진님이 말씀하신대로 파일 가져오는 상황에서 경로가 잘못되었을 가능성이 크겠네요.
다음부터는 에러 메세지 언급이 되었다면 그 메세지도 함께 남겨주세요!
좋은 하루 되십시오~
개발하는데 발시리면 안되니 ㅎㅎ
보일러 잘 고쳐졌길 바랍니다!!
제 판단으로는.
include 로 해서 안되어서 require_once 로 했던건데
include 나 require_once 의 문제가아닌
RXE 경로인 _XE_PATH_. 를 추가하면서 인크루드가 되는것으로 보여지긴 하네요.
참고한 글은 람보님이 적어주신
https://xetown.com/topics/807373
이글 이며 결론적으로 잘 성공하였습니다.
감사합니다.
require_once \RX_BASEDIR . 'modules/a/abc.php';
1. 라이믹스이므로 _XE_PATH_ → \RX_BASEDIR 사용을 권장합니다.
2. _XE_PATH_든 \RX_BASEDIR이든 슬래시가 이미 붙어 있으므로 modules 앞에 슬래시는 제거합니다.
include와 require의 차이는, 경로가 잘못된 경우 include는 아무 말 없이 지나가지만 require는 에러를 뿜고 뻗습니다. include로 하더라도 나중에 무슨 함수가 선언되지 않았다느니 하며 결국 에러를 뿜을 가능성이 높지만, require는 딱 파일명을 지정한 자리에서 에러가 나니까 에러메시지를 확인하기에 더 편리하지요.
질문 의도가 에러와 관련 없더라도, 에러가 난다고 일단 언급을 하셨다면 에러메시지를 적어주셔야 불필요한 논의에 시간 낭비하는 것을 피할 수 있습니다. 정말 관련 없다고 생각하셨다면 아예 언급을 하지 말았어야 하고요.
답변감사합니다.
성격이 급하다보니 항상 질문에 서툰점이 많습니다. 죄송합니다.
적어주신 \RX_BASEDIR로 교체하고 / 제거하여 이용하겠습니다.
require_once 이건 1회성 include 이건 반복성 이란걸 찾다보니 본것같은데
include에서
PHP Fatal error: Cannot declare class Autoloader, because the name is already in use in
가 나던 에러가 require_once 에서는 안나는 신기한 현상도 목격을 했네요.
결론적으로 모든 문제를 잘해결하였습니다 도움 주셔서감사합니다.
include = 오류 무시, 반복성
include_once = 오류 무시, 일회성
require = 오류 뿜음, 반복성
require_once = 오류 뿜음, 일회성
클래스나 함수를 선언하는 파일이라면 일회성 버전을 사용해야겠지요.
공부 수준까지는 아니지만 php를 조금씩 알아가니 훨씬 더 재미 있고 활용도도 높네요.
개발 언어들은 알면 알수록 매력적입니다.
include 와 require 그리고 _once 차이점 잘 배웠습니다. 감사합니다.