Extra Form
PHP PHP 7.2
CMS Rhymix 2.0

안녕하세요.

 

모듈 A가 있고

 

모듈 A 에서 abc.php 를 인크루드 하려고합니다.

 

추가로 abc.php 파일에는 

require("def.php");

 

이런식으로 파일이 구성이 되어 있습니다.

 

모듈내에서 인크루드는

require_once _XE_PATH_.'/module/a/abc.php';

로 하는게 맞을까요?

검색해보니 이방법인것 같긴한데 전체 경로도 넣어보고 절대경로 상대경로 다 넣어보았지만 

500 에러가 발생을하네요.

 

관련하여 도움 부탁드립니다.

  • profile
    500에러 메세지부터 확인하세요.
  • profile profile
    답변감사합니다.

    require_once _XE_PATH_.'/module/a/abc.php'; 는 작동하는 것 같긴 하네요.
    다른걸 넣었을때는 인크루드 관련에러가 나왔는데
    위처럼 넣으니 다음줄로 가는것으로 봐서는 작동하는 것 같긴 하네요.

    require_once _XE_PATH_.'/module/a/abc.php';이 올바른 방법인지 아닌지 궁금합니다.
  • profile profile
    500에러는 php에러 문제입니다 정확한 해결은 그 에러내역을 직접 보고 이해할 수 잇어야 됩니다

    에러메세지, 해당 코드들 인클루드 이후 코드 에러발생코드위치 다알아야 정확한 원인을 파악할 수 잇지 스무고개 퀴즈 계속 내심 곤란합니다. 에러메세지부터 파악하세요
  • profile profile
    명확한 질문으로

    모듈에서 인크루드 하는 방식이
    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';에서는 안나는것 같습니다.

    인크루드 에러인것 같은데 여러종류를 시도하면서 위 방법을 사용하는게 맞는지 궁금합니다.
  • profile profile
    보일러 고장때문에 a/s기사님이 방문하셧어서 이제 댓글 다시 확인했습니다. ㅎ

    아래 기진님이 말씀하신대로 파일 가져오는 상황에서 경로가 잘못되었을 가능성이 크겠네요.

    다음부터는 에러 메세지 언급이 되었다면 그 메세지도 함께 남겨주세요!

    좋은 하루 되십시오~
  • profile profile
    감사합니다
    개발하는데 발시리면 안되니 ㅎㅎ
    보일러 잘 고쳐졌길 바랍니다!!
  • profile

    제 판단으로는.
    include 로 해서 안되어서 require_once 로 했던건데

    include 나 require_once 의 문제가아닌
    RXE 경로인 _XE_PATH_. 를 추가하면서 인크루드가 되는것으로 보여지긴 하네요.

     

    참고한 글은 람보님이 적어주신

    https://xetown.com/topics/807373

    이글 이며 결론적으로 잘 성공하였습니다.

     

    감사합니다.

  • profile

    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는 딱 파일명을 지정한 자리에서 에러가 나니까 에러메시지를 확인하기에 더 편리하지요.

     

    질문 의도가 에러와 관련 없더라도, 에러가 난다고 일단 언급을 하셨다면 에러메시지를 적어주셔야 불필요한 논의에 시간 낭비하는 것을 피할 수 있습니다. 정말 관련 없다고 생각하셨다면 아예 언급을 하지 말았어야 하고요.

  • profile profile

    답변감사합니다.

    성격이 급하다보니 항상 질문에 서툰점이 많습니다. 죄송합니다.

    적어주신 \RX_BASEDIR로 교체하고 / 제거하여 이용하겠습니다.

    require_once 이건 1회성 include 이건 반복성 이란걸 찾다보니 본것같은데
    include에서
    PHP Fatal error: Cannot declare class Autoloader, because the name is already in use in
    가 나던 에러가 require_once 에서는 안나는 신기한 현상도 목격을 했네요.

    결론적으로 모든 문제를 잘해결하였습니다 도움 주셔서감사합니다.

  • profile profile

    include = 오류 무시, 반복성
    include_once = 오류 무시, 일회성
    require = 오류 뿜음, 반복성
    require_once = 오류 뿜음, 일회성

     

    클래스나 함수를 선언하는 파일이라면 일회성 버전을 사용해야겠지요.

  • profile profile
    html css만 가지고 사이트를 운영하다
    공부 수준까지는 아니지만 php를 조금씩 알아가니 훨씬 더 재미 있고 활용도도 높네요.
    개발 언어들은 알면 알수록 매력적입니다.

    include 와 require 그리고 _once 차이점 잘 배웠습니다. 감사합니다.