리눅스에서 MS-SQL 사용하기
환경 : Centos
APM버전 : apache 2 / php 5 / mysql 4
먼저 freetds 다운을 받아 설치한다
[root@ns1 ~]# wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
[root@ns1 ~]# tar xvfz freetds-stable.tgz
[root@ns1 ~]# cd freetds-0.82/
[root@ns1 freetds-0.82]# ./configure -prefix=/usr/local/freetds –with-tdsver=8.0 –disable-odbc –disable-debug -enable-dbmfix -enable-msdblib
### PHP 설치시에 freetds 경로를 인식하지 못하는 경우가 있는데 이렬경우에는 파일을 복사해준다
[root@ns1 freetds-0.82]# cp include/tds.h /usr/local/freetds/include/
[root@ns1 freetds-0.82]# cp src/tds/.libs/libtds.a /usr/local/freetds/lib/
#### PHP 컴파일시에 아래와 같이 옵션을 추가해준다.
[root@ns1 php-5.2.5]# ./configure \
생략
–with-mssql=/usr/local/freetds \
-with-sybase=/usr/local/freetds \
phpinfo 페이지에서 mssql이 아래와 같이 모듈이 올라온다
최종 설치가 왼료되었으면 mssql의 함수가 적용되는지 웹페이지서 확인한다
아래 문서를 웹페에지서 확인해본다
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<html xmlns=”http://www.w3.org/1999/xhtml“>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=euc-kr” />
<title>Untitled Document</title>
</head>
<body>
<?
$aaa = array (
“mysql_query”,
“mssql_bind”,
“mssql_close”,
“mssql_connect”,
“mssql_data_seek”,
“mssql_execute”,
“mssql_fetch_array”,
“mssql_fetch_assoc”,
“mssql_fetch_batch”,
“mssql_fetch_row”,
“mssql_field_length”,
“mssql_field_name”,
“mssql_field_seek”,
“mssql_field_type”,
“mssql_free_result”,
“mssql_free_statement”,
“mssql_get_last_message”,
“mssql_guid_string”,
“mssql_init”,
“mssql_min_error_severity”,
“mssql_next_result”,
“mssql_num_fields”,
“mssql_num_rows”,
“mssql_pconnect”,
“mssql_query”,
“mssql_result”,
“mssql_rows_affected”,
“mssql_select_db” );
$i=0;
while ($aaa[$i]) {
if (function_exists($aaa[$i])) {
echo $aaa[$i]. ” : <font color=green>is exists</font> <br>”;
}
else echo $aaa[$i]. ” : <font color=red>is not exists</font> <br>”;
$i++;
}
?>
</body>
</html>
위의 문서를 출력하면 다음과 같이 정상적으로 함수부분이 사용된다
두번째 방법으로는 freetds의 conf 파일을 이용한 방법으로 mssql의 데이터베이스를 쿼리해 본다
[root@ns1 ~]# vi /usr/local/freetds/etc/freetds.conf
이곳에 아래와 같이 ms-sql서버의 접속정보를 기입한다
[mssql_test]
host = 192.168.1.10
port = 1433
tds version = 7.0
아래와 같이 php 파일 문서를 작성해서 웹페이지에서 테스트해본다
<?php
putenv(”FREETDSCONF=/usr/local/freetds/etc/freetds.conf”);
putenv(”TDSVER=70″); // tds 버전을 여기다 적어두 된다
$hostname = “mssql_test”; // freetds.conf 에서 적어준걸로..
$username = “test”;
$password = “0000″;
$dbname = “test”;
$connection = mssql_connect($hostname,$username,$password);
mssql_select_db($dbname);
echo(”<table border=1>”);
$query = “select * from zipcode” ;
$query_result = mssql_query($query) ;
$number_rows = mssql_num_rows($query_result) ;
$number_fields = mssql_num_fields($query_result) ;
for ($row_number=0; $row_number<=$number_rows-1; $row_number++)
{
print “<tr>”;
for ($field_number=0; $field_number<=$number_fields-1; $field_number++)
{
print “<td>” . mssql_result($query_result, $row_number, $field_number) . “</td>” ;
}
print “</tr>”;
}
print “</table>”;
mssql_close($connection);
?>