Background Image

FORUM

2022.04.27 11:20

php 7.4 접속 에러

조회 수 74 추천 수 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 로 작성해서 접속 테스트를 하였는데 연결이 잘됩니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 1913
3630 loaddb명령으로 sql파일 입력시 pk의 데이터가 중복일 경우에 대한 대처가 가능한 명령문을 알려주시면 감사하겠습니다. 7 영웅찬 2022.05.18 63
3629 함수 문의 1 amostella 2022.05.18 21
3628 복구가 일부만 되었습니다. 3 도우너19 2022.05.16 46
3627 큐브리드 ha master-replica 구성시 clob 필드가 업데이드 되지 않는 거 같습니다. 3 samsam 2022.05.16 33
3626 큐브리드 백업과 삭제 cron 자동 설정 9 도우너19 2022.05.16 37
3625 Program 'spacedb' (pid 5835) was connected from the host 'localhost.localdomain' 3 file 도우너19 2022.05.16 20
3624 cubrid tool 문의 1 amostella 2022.05.13 22
3623 큐브리드 ha 구성 중에 master DB가 올라오지 않습니다. 11 samsam 2022.05.12 59
3622 안녕하세요 큐브리드 재설치 후 '가져오기' 및 INSERT된 데이터 오류 문의드립니다. 3 큐브짱 2022.05.12 25
3621 날짜 형식 변환 2 밍아 2022.05.11 20
3620 terminate called after throwing an instance of 'std::bad_alloc' 8 영웅찬 2022.05.11 42
3619 hb_thread_check_disk_failure 오류 문의 드립니다. 1 큐브짱 2022.05.11 41
3618 c# cubrid -> mssql BLOB type 데이타 전환 1 알고싶다! 2022.05.09 17
3617 큐브리드 SYSDATETIME 문의 드립니다. 1 file 큐브리드궁금 2022.05.06 22
3616 [Cubrid HA] restoreslave 사용할 경우 Master/Slave 경로를 반드시 동일하게 맞춰야하나요? 1 큐브짱 2022.05.06 30
3615 Error Number: -17 Internal error: fetching deallocated pageid 16777216 of volume 오류 1 나라디 2022.05.04 25
3614 nodejs와 cubrid 서버와 연동 (localhost 아닙니다) 3 hiDev 2022.05.02 50
3613 Cubrid HA 구성서버 중, Slave에서 restoreslave 동작시 오류 관련하여 문의드립니다. 1 큐브짱 2022.05.02 23
3612 cubrid acl reload 에러 1 hiDev 2022.04.29 21
» php 7.4 접속 에러 16 file jslee 2022.04.27 74
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 182 Next
/ 182

Contact Cubrid

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