[원문] http://kltp.kldp.org/stories.php?story=01/10/25/7627472
제목그대로 Linux에서의 ODBC설정 입니다.
1.http://oplweb2.openlinksw.com/product/webmatrix.asp
먼저 이곳에서 NT에 설치를 할 openlink SW를 받아 NT에 설치를 합니다.
대충 환경에 맞게 설치를 하시고 서비스를 띄웁니다.
2.http://oplweb2.openlinksw.com/product/webmatrixsdk.asp
이곳에서 리눅스에 설치를 할 odbc와 isntall.sh을 다운 받습니다.
(이하 리눅스 작업)
3. 디렉토리를 만듭니다.
# mkdir /usr/openlink
4. 다운받은 파일을 위의 디렉토리로 옮깁니다.
# mv install.sh l3kozzzz.taz /usr/openlink
5. 설치를 합니다.
# sh install.sh
6. odbc.ini 파일을 수정, 삽입합니다.
# vi /usr/openlink/odbcsdk/doc/odbc.ini
--- 수정 ---
Driver=/home/openlink/odbcsdk/src/oplodbc.so.1
를
Driver=/usr/openlink/odbcsdk/lib/oplodbc.so.1
이렇게..
--- 삽입(설정에 맞게) ---
[access]
Host = <Windows server> // 아이피번호:포트
ServerType = Odbc
Database = <DSN name on server> // DSN
UserName = sa
Password =
;FetchBufferSize = 30
7. 환경설정을 합니다.
export ODBCINI=/usr/openlink/odbcsdk/doc/odbc.ini
8. 테스트를 해봅니다.
/usr/openlink/odbcsdk/examples/odbctest
Enter ODBC connect string (? shows list): DSN=access
꼭 DSN=access 라는 형식으로 적어줍니다.
환경설정이 제대로 되었다면
SQL>
이라는 프롬프트가 뜹니다. 그럼 일단 성공.
안되면 odbc.ini수정, 삽입과 export부분을 다시 해 보세요.
위의 방법후 ODBC로 접근할수 있는 방법은 몇가지가 있습니다.
여기서는 일단 PHP-ODBC를 소개하죠
위의 작업이후 아파치와 PHP를 컴파일 해야 합니다.
아래 컴파일 내용들은.. 다들 잘 아시겠죠? 긴말 안합니다.
cd apache_1.3.x
./configure --prefix=/usr/local/apache
cd ../php-4.x.x
./configure -with-iodbc=/usr/openlink/odbcsdk --with-apache=../apache_1.3.x --enable-track-vars
make
make install
cd ../apache_1.3.x
./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a
make
make install
cd ../php-4.x.x
cp php.ini-dist /usr/local/lib/php.ini
아래 예제파일을 만들어 PHP를 가동시켜 봅니다.
<?php
putenv("LD_LIBRARY_PATH=/usr/openlink/odbcsdk/lib");
putenv("ODBCINSTINI=/usr/openlink/odbcsdk/doc/odbcinst.ini");
putenv("ODBCINI=/usr/openlink/odbcsdk/doc/odbc.ini");
$dsn="access"; // 이게 안되면 "DSN=access"로 해 보세요
$user="sa";
$password="";
$sql="SELECT * FROM table";
/* directly execute mode */
if ($conn_id=odbc_connect("$dsn","$user","$password")){
echo "connected to DSN: $dsn<br><br>";
if($result_id=odbc_do($conn_id, $sql)) {
echo "executing '$sql'<br><br>";
$num_fields=odbc_num_fields($result_id);
if($num_fields>0){
echo "Number of fields: $num_fields<br>";
for($i=1;$i<=$num_fields;$i++){
$field_name[$i-1]=odbc_field_name($result_id,$i);
}
$num_rows=0;
while(odbc_fetch_row($result_id)){
for($i=1;$i<=$num_fields;$i++){
$result[$num_rows][$field_name[$i-1]]=odbc_result($result_id,$i);
}
$num_rows++;
}
echo "Number of rows: $num_rows<br>";
}else{
echo "not a field returned. <br><br>";
}
echo "Results:<br>";
for($i=0;$i<sizeof($result);$i++){
while(list($key,$value)=each($result[$i])){
echo "$i:$key=$value<br>";
}
}
echo "freeing result<br><br>";
odbc_free_result($result_id);
}else{
echo "can not execute '$sql'<BR><BR>";
}
echo "closing connection $conn_id";
odbc_close($conn_id);
}else{
echo "can not connect to DSN: $dsn<br><br>";
}
?>
주의할 점은 NT DB table상에 primary키가 무조건 있어야
select 가 된다는 겁니다.
자~ 잘 되십니까?
그럼 도움이 되셨기를...
-----
테스트사양 : 래드햇 7.1, apache_1.3.20, PHP-4.0.6
관련사이트 : http://www.iodbc.org
http://www.openlink.org
http://www.phpschool.com
'PHP관련' 카테고리의 다른 글
FREETDS를 이용해 LINUX-PHP에서 원격의 MS-SQL 연결하기 (0) | 2011.10.14 |
---|---|
php adodb 한글 라이브러리 메뉴얼 (0) | 2011.10.14 |
header - 웹에서 엑셀파일 만들기 (0) | 2011.10.14 |
Smarty 를 윈도우에서 설치하기 (0) | 2011.10.14 |
Smarty 사용설명서 (0) | 2011.10.14 |