database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
ㆍInformix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Informix Tutorials 1560 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 1560
PHP에서 Informix사용하기
작성자
정재익(advance)
작성일
2002-10-26 11:02:42
조회수
15,706

PHP에서 Informix사용하기

 

작성 : 홍성학 (euriion@pagemaker.pe.kr)

 

원본출처 : http://www.pagemaker.pe.kr/lecture/php_informix/php_informix.htm

 

초창기 인포믹스와 PHP 의 연동에 대해서 적어 놓은 글입니다. 지금은 Informix 가 많이 바뀌었습니다. 그냥 기록상 남겨 둔다고 생각하세요.

=================================

 

글쓴이:홍성학(euriion@pagemaker.pe.kr)

날짜:2002-06-22

최종수정일:2002-06-22

이 강좌는 허락없이 무단 전제 및 배포할 수 없습니다.

 

PHP에서 INFORMIX를 핸들링해야 하는 프로젝트를 하게 되어서 LINUX상에서 PHP와 INFORMIX를 연결하는 법을 간단히 정리해 보았습니다. 어디까지나 간단히 정리한 것 입니다.

 

** 작업환경 **

 

웹서버 환경 : LINUX / PHP 4.0.X,

데이터베이스 : SUN OS / INFORMIX

INFORMIX와 LINUX는 각각 다른 서버에 설치되어 있으며 이 것을 연결하여야 합니다.

 

** SETNET설치하기 **

 

우선 INFORMIX용 SETNET을 설치하여야 합니다. ORACLE에 연결하려면 SQLNET이 필요하듯이 INFORMIX에 연결하려면 SETNET이라는게 필요합니다. 다행이 ORACLE과는 달리 SETNET자체는 무상으로 제공 하더군요.

다음 사이트에 가서 받으시면 됩니다. 단 무료 회원가입을 해야 합니다.

 

http://www.informix.com/evaluate

 

사이트에서 보면 "IBM IFMX CLIENT SDK"라는 게 있는데 이중 OS에 맞는 것을 선택합니다.

WINDOWS에서도 작업을 해야 한다면 기회에 WINDOWS용도 받아 두는게 좋습니다.

버전 뒤에 붙은 FC 라고 되어 있는 것이 64bit를 말하고 UC 라고 되어 있는 것은 32bit를 말합니다.

 

IBM I-CLIENT SDK NT 2.70.TC3-1 for INTEL WINDOWS XP

IBM IFMX CLIENT SDK 2.70.UC3-1 for INTEL LINUX 2.2.14 GLIBC2.1.3

 

필자는 WINDOWS-XP를 사용하므로 위의 2가지를 받았습니다.

다른 버전의 WINDOWS를 쓰시는 분들은 맞는 버전을 다운로드 하시면 되겠지요?

물론 WINDOWS용은 안 받으셔도 PHP에서 사용하는데 아무런 문제가 안 됩니다.

강좌의 특성상 WINDOWS에서의 연결법을 설명하지 않습니다.

 

자 일단 받은 파일을 보면

 

110179212040752.zip

 

라는 파일이거나 비슷한 이름의 파일이겠죠?

그리고 압축을 풀면 RPM파일이 하나 나오지요.

 

110179212040752.rpm

 

RPM인 이유는 아마도 LINUX용 SDK는 REDHAT계열을 중심으로 만든 것 같습니다. RPM을 지원하지 않는 배포판이라면 소스버전을 따로 다운로드 받아야 하는 모양입니다만 필자는 다행이 REDHAT계열을 쓰고 있으므로 신경쓰지 않기로 했습니다.

이 파일을 FTP를 이용해서 서버에 업로드합니다.

 

그리고 다음과 같이 하여 rpm을 설치합니다.

 

rpm -ivh 110179212040752.rpm

 

설치가 되지 않고 에러가 나올 가능성이 많습니다.

환경변수에 INFORMIXDIR이 없기 때문입니다.

root계정으로 접속했다면 /root디렉토리에 .bashrc파일에 다음 줄을 추가해 줍니다.

 

export INFORMIXDIR=/opt/informix

 

/opt/informix가 아니라 /usr/informix같은 임의의 디렉토리에 설치해도 되는 모양인데 informix설치 가이드에서 /opt 어쩌고 써놨길래 해석하기도 귀찮고 해서 아무 생각없이 저기에 설치하기로 했습니다.

시험삼아 다른 디렉토리에 설치해 보실 분들은 한 번 시도해 보세요.

 

자 접속을 끊고 재접속하시던지 아니면 다음처럼 입력해서 환경변수를 설정해야 합니다.

 

INFORMIXDIR=/opt/informix

export INFORMIXDIR

 

자 그리고 rpm을 설치하기 전에 informix란 계정을 만들어 줘야 합니다.

SDK가 설치되면서 informix계정을 찾더군요.

다음 처럼 해서 계정을 만들고 암호를 설정하지요.

 

useradd informix

passwd informix

 

자 이제 rpm를 설치하면 rpm이 설치가 됩니다.

 

자 여기까지 SETNET의 설치가 끝났습니다.

 

** SETNET설정하기 **

 

SETNET의 경우 WINDOWS용은 설정하기가 좀 귀찮더군요. LINUX용 SDK는 별로 어렵지 않습니다.

다음 파일을 vi로 엽니다.(/opt/informix는 설치된 디렉토리를 말합니다.)

 

/opt/informix/etc/sqlhosts

 

파일을 열고 나서 마지막줄에 다음 사항을 기재합니다.

포트번호는 보통 1100인가 봅니다만 확실치 않습니다.

어쨌든 본인이 사용할 INFORMIX의 포트번호를 적으면 됩니다.

 

호스트네임 onsoctcp IP주소 포트번호

 

자 여기까지 했으면 한가지 더 해둬야 합니다.

INFORMIXSERVER란 환경변수를 설정해 두는 것이 필요하죠.

이 작업을 하지 않으면 PHP에서 연결할 때 에러를 일으킵니다.

다음 줄을 타이핑합니다.

 

INFORMIXSERVER=호스트네임

export INFORMIXSERVER

 

/root의 .bashrc에 넣어 두어도 되겠지요.

 

자 여기까지 했으면 SETNET의 설정이 끝났습니다.

 

자 이제 APM을 설치하시면 됩니다.

RPM설치는 APM설치강좌를 보시면 되겠구요.

한가지 주의사항은

PHP를 Configure할 때 다음 옵션을 추가해 줘야 합니다.

 

--with-informix=$INFORMIXDIR

 

즉 MySQL과 INFORMIX를 같이 쓰는 경우에는 다음과 같이 되겠지요.

 

./configure --with-apache=../apache \

-- with-mysql=/usr/local/mysql \

--with-informix=$INFORMIXDIR \

--enable-track-vars

 

자 제대로 APM이 설치되었으면 PHP에서 테스트 해 보면 됩니다.

 

PHP에서 다음줄을 넣어 실행해 보고 성공하면 O.K입니다.

호스트네임은 아까 sqlhosts에 적었든 것을 말합니다.

 

$db_conn = ifx_connect(호스트네임, "DB계정", "DB번호")

 

에러없이 끝났다면 개발을 시작하면 되겠지요.

 

개발시 다음 사항을 주의하세요.

 

1. 불행히도 Dreamweaver MX에서는 PHP - Informix를 지원하지 않더군요.

필요하다면 외부 익스텐션을 사용해야 할 것 같구요.

 

2. 쿼리결과값의 로우(row) 개수를 받아오는 2함수 ifx_num_rows와 ifx_attached_row가 제대로 작동하지 않습니다.

PHP의 버그가 아니고 INFORMIX의 버그라고 하는 군요. 이게 말이 버그지 버그는 아닌가 봅니다.

해결방법은 COUNT(*) 구문을 한 번 더 날려서 로우 개수를 받아 오는 방법밖에는 없다는 군요.

이 경우 DB스트레스는 본인 책임이라고 하네요. ㅡ.ㅡ

 

3. INOFMIX가 ORACLE이나 MySQL, MSSQL에 비해서 확장 문법이 상당히 약합니다.

따라서 복잡한 작업은 안하시는것이 좋을 것 같습니다.

특히 ORACLE의 inlie view기능과 PSEUDO Colum도 지원하지 않습니다.

또, 리턴된 결과 중에서 지정된 개수 만큼만 로우(row)를 받아 오려면 MySQL의 limit같은 구문은 없고 MSSQL처럼 top 구문을 써야 한다고 하네요.

(쫌 게시판 같은 것을 개발할 때 애로사항이 많을 듯 합니다.)

 

어쨌든 써본지는 얼마 안되었지만 INFORMIX..

여러면에서 볼 때 제 짧은 소견으로는 WEB에는 적합하지 않은 DB인것 같습니다.

ORACLE이 괜히 비싼건 아니었나 봅니다. ㅡ.ㅡ

 

- 끝 -

[Top]
No.
제목
작성자
작성일
조회
2459셀프스터디(system admin)
윤도경
2008-02-12
9152
2456sysmaster 이용하기
윤도경
2008-02-11
9676
1927[TIP] 인라인뷰 사용... [2]
백정현
2004-01-20
16357
1560PHP에서 Informix사용하기
정재익
2002-10-26
15706
1554Informix 7.0 서버 설정
정재익
2002-10-26
11528
1538오라클의 기능인 rownum을 인포믹스에서 구현하기
정재익
2002-10-19
14259
1534log transaction 발생한 세션을 찾는 방법
정재익
2002-10-19
9874
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.069초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다