안녕하세요.
root로 웹서버 사용자로 switch한 후 실행시켜 보시기 바랍니다.
일반적인 경우 nobody이고 아파치는 버전에 따라 apache 또는
nobody를 사용합니다.
# su - nobody
아마 이 경우 같은 오류가 발생할 것입니다.
그리고 cgi 프로그램은 웹서버 사용자 ID로 접속을 시도합니다.
그러므로 접속을 원하는 해당 데이터베이스에 접속권한을
주어야 합니다.
grant connect to nobody; 또는
grant connect to apache; 를 해주어야 합니다.
그냥 informix 사용자 ID로 접속을 원하신다면
접속시
connect to "test@test" USER "informix" USING :passwd;
와 같이하여 접속합니다.
현재 실행중인 사용자가 아닌 다른 사용자 ID로 접속을 위해서는
패스워드가 요구되며 호스트 변수로만 assign이 가능합니다.
추측으로는 위의 사용자 접속권한 문제가 아니라
환경변수의 설정문제로 보입니다.
웹서버 사용자로, 환경변수를 하나씩 설정하면서 테스트해 보시기
바랍니다.
그럼 수고하세요.
>>바보 님께서 쓰시길<<
:: 우선, 박영길님 답변에 감사드립니다.
::
:: INFORMIXDIR=/home/informix로 user가 informix 정확합니다.
:: 만약 "INFORMIXDIR"이 잘못되었다면 esqlc로 작성한 Web CGI가 아닌 상태에서도
:: DB insert 에러가 발생해야 할 건데 정상이거든요.
:: Web CGI 상태에서만 문제가 생깁니다.
:: 여기저기 참고자료를 보아 'IX001' 에러가 퍼미션문제나 Grant문제라고 판단되는데, 아파치 웹데몬에
:: 서 CGI로 넘어와서 DB로 연결되기 때문에 informix란 유저를
:: 인식하지 못하는것 같습니다. 익식시킬 방법이 없나요?
::
:: >>박영길 님께서 쓰시길<<
::
:: :: 안녕하세요.
:: ::
:: :: SQLCODE가 -1829인 경우는 주로 "INFORMIXDIR"이 제대로
:: :: 설정되지 않아서 발생합니다. "INFORMIXDIR"인 제대로
:: :: 설정되면 메시지 파일을 읽어들여서 해당메시지를 출력하게
:: :: 되고요.
:: ::
:: :: 직접 putenv("INFORMIXDIR=/opt/informix");를
:: :: 해보시거나 getenv("INFORMIXDIR");을 사용하여 제대로
:: :: 설정되었는 가를 확인하시기 바랍니다.
:: ::
:: :: 그럼 수고하세요.
:: ::
:: :: >>바보 님께서 쓰시길<<
:: ::
:: :: ::
:: :: :: SQLCODE가 -1829로 표시되는데, finderr -1829 하면 자세한 오류내용이
:: :: :: 나타나질 않습니다. CGI가 http
:: :: :: 데몬의 퍼미션으로 동작되기 때문에 생기는 문제인것 같은데....
:: :: :: CGI 내부에 환경변수를 아래같이 추가하고 grant를 informix로
:: :: :: 설정해줬는데도 같은 현상입니다.
:: :: ::
:: :: :: putenv(INFORMIXDIR);
:: :: :: putenv(INFORMIXSERVER);
:: :: :: putenv(DBPATH);
:: :: :: putenv(PATH);
:: :: :: putenv(DBLANG)
:: :: ::
:: :: :: >>박영길 님께서 쓰시길<<
:: :: ::
:: :: :: :: 안녕하세요.
:: :: :: ::
:: :: :: :: SQLCODE값을 print해 본 후
:: :: :: :: printf("SQLCODE-> %d", SQLCODE);
:: :: :: ::
:: :: :: :: $ finderr SQLCODE값
:: :: :: ::
:: :: :: :: 을 하여 자세한 오류를 찾아보시기 바랍니다.
:: :: :: ::
:: :: :: :: 그럼.
:: :: :: ::
:: :: :: :: >>바보 님께서 쓰시길<<
:: :: :: ::
:: :: :: ::이렇게 저렇게 Web Server와 DB Server를 remot로 연결해서 Web Server측에서
:: :: :: ::Esqlc로 data를 insert 하는데까지는 문제가 없었습니다.
:: :: :: ::똑같은 insert 내용을 Web에서 form을 써서 입력받아 CGI를 통해 DB Server에
:: :: :: ::insert하면 'SQLSTATE after fetch is IX001' error가 발생하는데,
:: :: :: ::의심나는 곳은 환경설정이나 grant 부분인것 같은데 방법을 찾기 힘드네요.
:: :: :: ::Web Server는 아파치입니다.
:: :: :: ::::
|