Background Image

FORUM

2022.04.27 11:20

php 7.4 접속 에러

조회 수 171 추천 수 0 댓글 16
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Red Hat Enterprise Linux release 8.5 64bit
CUBRID Ver.
10.2
CUBRID TOOL Ver.
SQLGate for CUBRID Developer
응용 환경(API)
PHP 7.4 CI 3.1.4


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
현재 빌드가 끝나서

 

화면 캡처 2022-04-27 111924.png

 

정보 확인하였고, 디비 접속툴로 잘 접속이 되지만 PHP 소스상으로 접근을 하였을때는 에러가 발생합니다.

방화벽도 열려 있는거 확인했습니다.

화면 캡처 2022-04-27 112023.png

 

미리 답변 감사드립니다.

 

 

  • ?
    오명환 2022.04.28 09:18
    해당 오류 (-20016)은 php driver 내부에 발생한 오류로 DB connection시 인자 또는 URL를 잘 못 사용하시거나 network 오류에 의해 발생할 수 있습니다.

    우선, DB connection시 사용하신 인자 또는 URL를 점검해보시고,
    두번째는 php driver가 있는 서버에서 telnet 등을 이용해서 DB 서버의 33000 포트에 연결이 가능한지 확인을 해보세요.
  • ?
    jslee 2022.04.28 13:58
    답변 감사드립니다.

    1. DB connection 시
    cubrid_connect("172.32.1.40", 33000, "test_db, "dba", "1234");으로 접속 시도 하였습니다.

    2. telnet 172.32.1.40 33000 연결 확인 및 외부접속도 가능한 상태입니다.
  • ?
    김병욱 2022.04.29 11:49
    172.32.1.40 서버에서
    cubrid broker status 명령으로 broker가 동작 중인지 확인이 필요합니다.
    만약 broker가 동작하고 있지 않다면 cubrid broker start 명령으로 broker를 동작시켜 주어야 합니다.
    물론 cubrid_broker.conf 에서 BROKER_PORT가 33000으로 그리고 SERVICE가 ON으로 되어 있는지도 확인이 필요합니다.
  • ?
    jslee 2022.04.29 12:09
    답변 감사드립니다.

    1. cubrid broker status ->
    @ cubrid broker status
    % query_editor
    ----------------------------------------------------------------------
    ID PID QPS LQS PSIZE STATUS
    ----------------------------------------------------------------------
    1 158067 0 0 47340 IDLE
    2 158068 0 0 47340 IDLE
    3 158069 0 0 47340 IDLE
    4 158070 0 0 47340 IDLE
    5 158071 0 0 47340 IDLE

    % broker1
    ----------------------------------------------------------------------
    ID PID QPS LQS PSIZE STATUS
    ----------------------------------------------------------------------
    1 158078 9 0 82776 CLOSE_WAIT
    SQL:
    2 158079 40 0 84200 CLOSE_WAIT
    SQL:
    3 158080 7 0 82608 CLOSE_WAIT
    SQL:
    4 158081 19 0 82640 CLOSE_WAIT
    SQL:
    5 158082 0 0 82440 IDLE





    2. cubrid_broker.conf ->
    [broker]
    MASTER_SHM_ID =30001
    ADMIN_LOG_FILE =log/broker/cubrid_broker.log

    [%query_editor]
    SERVICE =ON
    SSL =OFF
    BROKER_PORT =30000
    MIN_NUM_APPL_SERVER =5
    MAX_NUM_APPL_SERVER =40
    APPL_SERVER_SHM_ID =30000
    LOG_DIR =log/broker/sql_log
    ERROR_LOG_DIR =log/broker/error_log
    SQL_LOG =ON
    TIME_TO_KILL =120
    SESSION_TIMEOUT =300
    KEEP_CONNECTION =AUTO
    CCI_DEFAULT_AUTOCOMMIT =ON

    [%BROKER1]
    SERVICE =ON
    SSL =OFF
    BROKER_PORT =33000
    MIN_NUM_APPL_SERVER =5
    MAX_NUM_APPL_SERVER =40
    APPL_SERVER_SHM_ID =33000
    LOG_DIR =log/broker/sql_log
    ERROR_LOG_DIR =log/broker/error_log
    SQL_LOG =ON
    TIME_TO_KILL =120
    SESSION_TIMEOUT =300
    KEEP_CONNECTION =AUTO
    CCI_DEFAULT_AUTOCOMMIT =ON


    말씀하신 내용 확인하였는데 이상한 점이 있을까요?

    감사합니다.
  • ?
    김병욱 2022.04.29 12:47

    php에서 cubrid_connect (..., 33000, ...) 접속은 broker1 입니다. 그런데 broker1의 상태를 보면 CLOSE_WAIT 입니다.
    정상적인 접속 시도인데, 접속이 안되고 CLOSE_WAIT 상태로 들어간 것이라면 현재 firewall 상태를 확인해 보는 것이 좋겠습니다.
    상황에 따라서는 firewall 환경을 설정할 수 있는 시스템 담당자나 root권한을 가진 사용자가 firewall 세팅을 점검해 볼 필요가 있습니다.
    만약 firewall에서 접속을 거부하는 상태라면, 접속 borker port인 33000에 대해 TCP 연결이 가능하도록 firewall을 설정해야 할 수도 있겠습니다.

     

    간단하게 체크할 수 있는 방법으로

    telent 172.32.1.40 33000

    이렇게 하면, 

     

    Trying 172.32.1.40 ...
    Connected to 172.32.1.40.
    Escape character is '^]'.

     

    위와 같은 응답이 있어야 정상적으로 포트가 열려있다고 확인할 수 있겠습니다.


     

  • ?
    jslee 2022.04.29 13:52

    빠른 답변 감사드립니다.

    접속할려는 php 셋팅이 되어 있는 서버에서
    $ telnet 172.32.1.40 33000
    Trying 172.32.1.40...
    Connected to 172.32.1.40.
    Escape character is '^]'.

    이렇게 확인 되었습니다.

     

    그래도 브로커1이 다 IDLE 상태여야 된다는 의미인가요?

    ----------------------------------------------------------------------
    ID PID QPS LQS PSIZE STATUS
    ----------------------------------------------------------------------
    1 158078 9 0 82776 CLOSE_WAIT
    SQL:
    2 158079 40 0 84200 CLOSE_WAIT
    SQL:
    3 158080 7 0 82608 CLOSE_WAIT
    SQL:
    4 158081 19 0 82640 CLOSE_WAIT
    SQL:
    5 158082 0 0 82440 IDLE

  • ?
    김병욱 2022.04.29 14:02
    cubrid server status 명령으로 해당 cubrid server가 동작 중인지도 확인해 주세요.
    @ cubrid server status
    Server demodb (rel 10.2, pid 135273)
    위와 같은 결과가 나오면 정상적으로 동작 중인 것으로 확인할 수 있습니다.
    server가 동작중이 아니라면, cubrid server start demodb 처럼 해당 서버를 start 해줘야 합니다.
  • ?
    jslee 2022.04.29 14:05

    빠른 답변 감사드립니다.

    $ cubrid service status
    @ cubrid master status
    ++ cubrid master is running.
    @ cubrid server status
    Server test_db (rel 10.2, pid 184503)
    @ cubrid broker status
    NAME PID PORT AS JQ TPS QPS SELECT INSERT UPDATE DELETE OTHERS LONG-T LONG-Q ERR-Q UNIQUE-ERR-Q #CONNECT #REJECT
    ===========================================================================================================================================================================================================
    * query_editor 184954 30000 5 0 0 0 0 0 0 0 0 0/60.0 0/60.0 0 0 0 0
    * broker1 184965 33000 5 0 0 0 0 0 0 0 0 0/60.0 0/60.0 0 0 0 0
    @ cubrid manager server status
    ++ cubrid manager server is running.

     

    $ cubrid broker status
    @ cubrid broker status
    % query_editor
    ----------------------------------------------------------------------
            ID   PID                  QPS        LQS   PSIZE STATUS
    ----------------------------------------------------------------------
             1 184955                    0          0   47340 IDLE
             2 184956                    0          0   47340 IDLE
             3 184957                    0          0   47340 IDLE
             4 184958                    0          0   47340 IDLE
             5 184959                    0          0   47340 IDLE

    % broker1
    ----------------------------------------------------------------------
            ID   PID                  QPS        LQS   PSIZE STATUS
    ----------------------------------------------------------------------
             1 184966                    0          0   47340 IDLE
             2 184967                    0          0   47340 IDLE
             3 184968                    0          0   47340 IDLE
             4 184969                    0          0   47340 IDLE
             5 184970                    0          0   47340 IDLE
     

  • ?
    김병욱 2022.04.29 14:45
    처음 댓글에서 아래와 같이 접속했다고 하셨는데요
    cubrid_connect("172.32.1.40", 33000, "test_db, "dba", "1234");
    이 php command에 잘 보면 오타가 있습니다. 쌍따옴표가 test_db 앞에 1개만 있고, test_db 뒤쪽에 빠져 있습니다. 아래와 같이 고쳐야 합니다.
    cubrid_connect("172.32.1.40", 33000, "test_db", "dba", "1234");

    본 게시판에만 오타가 있는건지요? 아니면 원래 php 코드에 오타가 포함되었는지 확인이 필요합니다.
  • ?

    답변 감사합니다.

    개인정보 차 db 이름을 수정하였습니다. 임의로 수정하다보니 따옴표가 빠진거 같습니다.
    이해 부탁드립니다.

     

    그리고 혹시나 하는 마음에 

    https://www.cubrid.com/qna/3830561 을 참고 하여 php가 7.4 인 관계로 cubrid_php 드라이브 버전을 10.2 에서 11로 올려서 테스트를 해보았지만 같은 오류를 발생합니다.

    화면 캡처 2022-04-29 145338.png

     

    사용하고 있는 테스트 코드 입니다.

    <?php
    printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

    printf("\n");

    $conn = cubrid_connect("172.32.1.40", 33000, "test_db", "dba", "1234");

    if (!$conn) {
        die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
    }

    $db_params = cubrid_get_db_parameter($conn);

    while (list($param_name, $param_value) = each($db_params)) {
        printf("%-30s %s\n", $param_name, $param_value);
    }

    printf("\n");

    $server_info = cubrid_get_server_info($conn);
    $client_info = cubrid_get_client_info();

    printf("%-30s %s\n", "Server Info:", $server_info);
    printf("%-30s %s\n", "Client Info:", $client_info);

    printf("\n");

    $charset = cubrid_get_charset($conn);

    printf("%-30s %s\n", "CUBRID Charset:", $charset);

    cubrid_disconnect($conn);
    ?>
     

     

  • ?
    김병욱 2022.04.29 14:54
    $CUBRID/log/broker/sql_log/broker1_1.sql.log 파일을 확인해 보시면,
    접속 기록이 있습니다.

    접속 기록을 잘 살펴보면, 어떤 오류가 있었는지도 확인할 수 있을 것 같습니다.
  • ?
    jslee 2022.04.29 15:05
    빠른 답변 감사합니다.

    접속이 안되어서 그에 대한 로그는 기록되지 않아서 $CUBRID/log/broker/error_log/broker1_1.err 추적했지만 별다른 에러 메시지는 없었습니다.
  • ?
    김병욱 2022.04.29 15:20
    기본적으로 broker는 TCP socket으로 통신을 하는데, 이 TCP socket connection이 문제인 경우 -20016 에러가 발생합니다.
    전체 현상을 보면 DB서버까지 접속 조차 하지 못한 것으로 파악이 됩니다.
    firewall은 다 열려있다고 하셨는데, 혹시나 한번 더 점검을 해주시면 어떨까라는 생각이 듭니다.
    - firewall 설정에서 해당 포트가 in bound 와 out bound 모두 열려있는지 확인해보면 좋을 것 같습니다.
  • ?
    jslee 2022.04.29 15:43

    답변 감사합니다.

    큐브리드 디비가 설치되어 있는 서버에서는
    1. 인바운드
    IP 버전 유형 프로토콜 포트범위 대상
    IPv4 사용자 지정 TCP TCP 33000 172.32.1.189/32
    IPv4 사용자 지정 TCP TCP 30000 172.32.1.189/32

    2. 아웃바운드
    IP 버전 유형 프로토콜 포트범위 대상
    IPv4 모든 트래픽 전체 전체 0.0.0.0/0


    $ telnet 172.32.1.40 33000
    Trying 172.32.1.40...
    Connected to 172.32.1.40.

    sqlGate for cubird 접속 테스트 성공입니다.

    감사합니다.

  • ?
    kisoo 2022.04.29 16:13
    인바운드 172.32.1.189/32는 src IP가 172.32.1.189 만 허용하겠다는 의미 입니다.
    인바운드를 172.32.1.189/16 또는 172.32.1.189/24로 수정해보시기 바랍니다.
  • ?
    jslee 2022.04.29 16:33

    답변 감사드립니다.

    172.32.1.189/32 테스트 서버는 이아이피 하나입니다.

    sqlGate for cubrid 로 접속 테스트 성공은 공인 아이피를 등록 해서 성공입니다.

    172.32.0.0/16, 172.32.1.0/24로 아이피 대역대를 확대해도 에러메시지는 같습니다.

    감사합니다.

     

    같은 환경에서 접속정보를 큐브리드가 아닌 mysql 로 작성해서 접속 테스트를 하였는데 연결이 잘됩니다.


  1. CUBRID 사용자를 위한 DBeaver 도구 출시 안내

    Date2024.04.23 Byadmin Views42
    read more
  2. SQLGate for CUBRID 영구 무료 라이선스 제공

    Date2020.04.09 Byadmin Views4458
    read more
  3. Error Number: -17 Internal error: fetching deallocated pageid 16777216 of volume 오류

    Date2022.05.04 By나라디 Views574
    Read More
  4. nodejs와 cubrid 서버와 연동 (localhost 아닙니다)

    Date2022.05.02 ByhiDev Views145
    Read More
  5. Cubrid HA 구성서버 중, Slave에서 restoreslave 동작시 오류 관련하여 문의드립니다.

    Date2022.05.02 By큐브짱 Views134
    Read More
  6. cubrid acl reload 에러

    Date2022.04.29 ByhiDev Views63
    Read More
  7. php 7.4 접속 에러

    Date2022.04.27 Byjslee Views171
    Read More
  8. php cubrid_driver 설치 에러

    Date2022.04.23 Byjslee Views299
    Read More
  9. 당혹스럽습니다. 쿼리문으로 만들어진 테이블이 있는데 삭제도 안됩니다.

    Date2022.04.21 By눈물색 Views424
    Read More
  10. Windows 10 php 5.6 Call to undefined function cubrid_connect() 에러 문의

    Date2022.04.21 Bydevlsy Views123
    Read More
  11. 자바 배치 쉘 수행시 큐브리드 이중화 설정

    Date2022.04.18 Byjeinhe Views79
    Read More
  12. 큐브리드 (java - 전자정부프레임워크 - 마이바티스) 연동 에러

    Date2022.04.15 By백수인 Views391
    Read More
  13. cubrid 성능 개선

    Date2022.04.15 By디어사이드 Views133
    Read More
  14. INITCAP함수 대체

    Date2022.04.13 Bysuyeon Views82
    Read More
  15. DB backup 시 문제가 발생합니다.

    Date2022.04.13 Bysamsam Views125
    Read More
  16. sqlgate에서 프로시저 실행시 에러

    Date2022.04.07 By밍아 Views271
    Read More
  17. autoexecquery.conf 매시간 실행 스케쥴 문의

    Date2022.04.06 ByRoy Views55
    Read More
  18. cubrid migration toolkit 데이터마이그레이션 시 데이터 깨짐현상

    Date2022.04.05 By스타일보스 Views80
    Read More
  19. java 컴파일시 Class Not Fount

    Date2022.04.05 By밍아 Views243
    Read More
  20. _db_attribute 수정 권한

    Date2022.04.04 Bymkchoi Views87
    Read More
  21. HA 구성 중 슬레이브 재구축 문의 드립니다. (2)

    Date2022.03.29 Bykikiki767 Views134
    Read More
  22. Cubrid HA 오류 로그 문의드립니다.

    Date2022.03.28 By큐브짱 Views293
    Read More
Board Pagination Prev 1 ... 15 16 17 18 19 20 21 22 23 24 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales