마법 메서드 (Magic Methods): __call(), __get(), __set(), __isset(), __unset()

이건 다들 아는 기능이다. 메서드 호출, 멤버 접근 등을 저 메서드를 통해서 속일 수 있다. 예를 들어 PHP에서는 원래 메서드 오버로딩이 안되는데, 이걸 이용하면 오버로딩을 흉내낼 수도 있다.

SPL

원래 확장으로 만들어져 PHP 5.2부터는 기본으로 포함하게 된 SPL은 엄청난 축복이다. 이름을 보면 짐작할 수 있듯, C++ STL의 반복자 개념에 영향을 받아 만든 라이브러리다(나도 STL을 좋아한다). 이것을 잘 이용하면 유사 배열 객체를 만들 수 있다.

Traversable

이 인터페이스를 구현하면 foreach문에 객체를 집어넣어서 배열처럼 돌릴 수 있다. Traversable은 유사 인터페이스고, 실제로는 Iterator 혹은 IteratorAggregate를 구현하면 된다. 전자는 반복자를 직접 구현하는 방식이고, 후자는 IteratorAggregate->getIterator() 메서드를 구현하여 반복자 객체를 위임하는 방식이다. 간단하게 배열처럼만 작동하는 객체를 의도한다면 후자가 좋고, 좀더 정교한 것을 원하면 직접 Iterator를 구현하는 것이 좋다.

Countable

이 인터페이스를 구현하면 count() 함수에 넣었을 때 배열처럼 원소 개수를 반환하게 할 수 있다.

ArrayAccess

정말 유용하다. 이거 모르는 사람이 매우 많은데, 첨자 연산자([])를 오버로드할 수 있다. 단순히 값을 반환하는 것 말고도 해당 키가 존재하는지 확인하는 것(isset($obj[$key])), 해당 키의 원소를 삭제하는 것(unset($obj[$key])), 원소를 덧붙이는 것($obj[] = $value), 해당 키의 원소 값을 수정하거나 추가하는 것($obj[$key] = $value)이 가능하다.

아, 중요한 것 하나. 배열과 달리 ArrayAccess를 구현한 객체는 키 값으로 스칼라 외에 배열이나 객체도 받을 수 있다.

가변 인자: func_get_args()

가변적인 갯수의 인자를 전달받을 때 사용한다. PHP는 함수 선언시에 명시한 시그너쳐에 맞지 않는 호출을 하면 오류를 내는데, 시그너쳐의 갯수보다 많은 인자를 받을 땐 오류를 내지 않는다. 이걸 이용하면 가변 인자를 받으면서 쉽게 오류 처리를 할 수 있다. 예를 들어 인자 갯수는 가변적이지만, 꼭 맨 처음의 인자 하나는 배열로 받아야 한다는 제약 사항이 있다면?

function get_array_and() {
    $args = func_get_args();
    if(!count($args) or !is_array($args[0]))
        throw new InvalidArgumentException('First parameter must be array');
    $array = $args[0];

위와 같이 할 수도 있지만, 아래처럼 하면 굳이 제약 사항을 검사하고 오류를 내는 코드를 직접 작성할 필요가 없다.

function get_array_and(array $array) {
    $args = func_get_args();

주의할 것이 있다. 이 함수의 호출은 항상 맨 첫 문장, 대입식을 제외한 가장 바깥 표현식이어야 한다. 그렇지 않으면 의도한대로 작동하지 않는다. 이유는 나도 모른다. 하지만 이 버그는 PHP쪽에서는 유명하다.

eval()

전달된 PHP 코드 문자열을 해당 문맥에서 실행한다. eval('echo 1234;')1234를 출력한다. 그렇지만 표현식을 받지는 않는다.

$expr = '123 + 456';
$value = eval($expr);

위와 같이 하면 문장이 세미콜론(;)으로 종결되지 않았다며 구문 오류가 난다. 표현식을 평가하고 싶다면 아래와 같이 써야 한다.

eval("\$value = ($expr);");

Reflection

PHP 5에서 추가된 리플렉션 기능을 사용하면 클래스의 멤버와 메서드 목록을 얻는다던가, 함수의 시그너쳐를 추적하는 등의 일을 할 수 있다. 인자에 타입 힌트가 있는지, 있다면 어떤 타입인지, 기본값이 있는지, 변수 이름이 무엇인지 등도 알 수 있다. 이런걸 이용하면 Python의 키워드 인자도 흉내낼 수 있을 것이다.

__toString()

이것도 마법 메서드의 하나인데, PHP 5에서 추가된 기능이다. 이 메서드를 정의한 객체는 echo문으로 출력할 때 __toString()이 반환한 문자열을 출력한다. Python의 __str__ 속성과 비슷한 용도이다. 그런데 이게 PHP 5.2 이후로는 substr() 같이 문자열을 받는 함수에 전달될 때 자동으로 해당 문자열로 캐스팅도 된다. 물론 명시적으로 (string) 캐스팅 연산자를 쓰는 것도 잘 된다.

trigger_error()

웬만하면 예외를 던지는 것이 좋지만, PHP 에러를 내야할 필요가 있을 때 이걸 사용한다.

debug_backtrace()

이 함수를 사용하면 호출 스택을 추적하는 것이 가능하다. eval()을 통하는 것과, include, require를 통한 것도 모두 추적할 수 있다. 대체 이 함수를 어디에 쓰겠느냐고 무심코 지나치면 안된다. 이 함수를 기억하고 있는 것만으로도, 종종 우연히 이 함수를 이용하여 좀더 우아한 DSEL을 달성할 때가 많다.

이 함수를 이용하는 대신 예외 객체를 생성하여 Exception->getTrace() 메서드로 받아내는 방법도 있다.

__FILE__ 상수

__FILE__ 상수의 값은 include, require 등과 무관하게 해당 상수는 현재 코드가 위치한 실제 파일 경로이다. 예를 들어 require_once dirname(__FILE__).'/file.php'과 같이 해당 소스 파일과 같은 위치에 있는 file.php를 불러올 수 있다. (저렇게 하지 않으면 include 호출의 맨 위쪽에 있는 파일에 상대한 경로로 인클루드를 시도한다.)

operator 확장

PHP에 기본적으로 포함되지는 않았지만, 매우 유용한 확장이다. 연산자 재정의를 가능하게 해준다. C++의 Boost.Spirit 라이브러리 같은 것을 보면 연산자 재정의가 얼마나 언어의 표현력을 높여주는지 알 수 있다. 자세한 것은 내가 예전에 정리해둔 문서를 참고하시라.

 

출처: http://blog.dahlia.pe.kr/?s=lexical


mysql

SELECT LAST_INSERT_ID();

php

@mysql_insert_id();

mssql

select @@identity 


출처: http://mwultong.blogspot.com/2007/05/php-cli-argc-argv.html


PHP CLI (Command Line Interface) 에서는, 다른 프로그램들처럼 실행시 옵션을 지정해 줄 수 있습니다.

$argc 에는 옵션의 개수가 자동으로 저장되어 있고, $argv 에는 실제 옵션들이 문자열로 저장되어 있습니다. 다만 0번째 옵션은, PHP 파일 자신의 이름이기에, $argc 에서 빼기 1을 해주어야 정확한 옵션 개수가 구해집니다.

다음 예제는 PHP 버전 5 이상에서만 실행됩니다.

$argc, $argv: 실행시 옵션 구하기/출력 예제


소스 파일명: example.php
#!/usr/bin/php
<?php

  if ($argc == 1) {
    fwrite(STDERR, "옵션 없이 실행하셨군요.\n\n");
    exit(1); // 운영체제에 에러코드 1을 반환하며 종료
  }


  echo "* 옵션 개수: " . ($argc - 1) . "\n\n\n";

  print_r($argv);


  // 일반 배열처럼 숫자를 첨자로 지정하면
  // 각 옵션에 접근할 수 있음
  echo "\n\n* 특정 옵션 출력: \$argv[1] = " . $argv[1] . "\n";

?>



실행 결과 화면:
D:\Z>php example.php
옵션 없이 실행하셨군요.

D:\Z>php example.php 111 222 333 뿡뿡이 똠방각하
* 옵션 개수: 5


Array
(
    [0] => example.php
    [1] => 111
    [2] => 222
    [3] => 333
    [4] => 뿡뿡이
    [5] => 똠방각하
)


* 특정 옵션 출력: $argv[1] = 111

D:\Z>example.php 111 222 333 뿡뿡이 똠방각하
옵션 없이 실행하셨군요.



D:\Z>


주의 사항: 위의 빨간 문자열 부분은 에러가 난 곳입니다. (편의상 빨갛게 표현했을 뿐 PHP 자체가 색깔을 출력한 것은 아님)

도스창 등에서 실행할 때, 파일명 앞에
php example.php 옵션들...
이렇게 php 를 붙여 주어야 합니다.

php 확장자의 파일을 php.exe 에 직접 연결하여
example.php 옵션들...
이렇게 실행하면, 현재 PHP 5는, 옵션을 제대로 인식하지 못합니다.


그리고 PHP를, Perl 같은 일반 스크립트 언어처럼 사용하는 것은 아직은 좀 무리가 있었습니다. 물론 계속 버전업이 되면 나아지겠지요.

기존 5.2버젼까지와 설치 방법이 많이 다릅니다. [zend]는 잊어주세요.

 

1. ioncube.tgz 첨부파일을 다운 받아서, 링크하드 설치폴더에 덮어 씌어주세요.
2. 설치한 폴더에 loader-wizard.php 의 파일을 확인 하실 수 있습니다.
브라우져에서 http://{링크하드설치폴더}/ioncube/loader-wizard.php 를 실행하면, 자신의 컴퓨터에 ioncube를 설치하는 안내 페이지를 확인 하실 수 있습니다.

3. 첫번째 선택 항목에선 3번째 local 을 선택하면, 다음단계에서 ioncube를 연결하기 위한 내용이 나옵니다.

이부분을 따라 가시면 됩니다.


아래 부분에 Installation Instructions 과 네모 박스안에 설치 방법을 살표보겠습니다.

1. Download one of the following archives of Loaders for Linux x8
- 이부분을 생략하셔도 됩니다. 이미 ioncube.tgz에 포함이 되어있습니다.
2. Put the Loader files in /usr/lib/php/modules
- ioncube_loader_lin_5.3.so 파일을 php modules 관리 폴더에 넣어줍니다.
cp {설치폴더}/ioncube/ioncube_loader_lin_5.3.so /usr/lib/php/modules/ (폴더는 다를 수 있습니다.)
3. # Save this 20ioncube.ini file and put it in your ini files directory, /etc/php.d
20ioncube.ini 파일을 /etc/php.d/ 폴더에 복사해주세요. 파일링크가 되어있지만, 첨부해놓겠습니다.
4. Restart the Apache server software.
ex) /etc/init.d/httpd restart 아파치를 재가동 해주세요.
5. When the server software has restarted, click here to test the Loader.
아파치 재가동 후 다시 http://{링크하드설치폴더/ioncube/loader-wizard.php 파일을 열어보면, 셋팅 여부를 확인 하실 수 있습니다.
6. If the Loader installation failed, check the Apache error log file for errors and see our guide to Unix related errors.
ioncube로더 아직도 셋팅이 안되었다면 다음 가이드를 따르라.
이문제는
edit /etc/selinux/config
SELINUX=disabled
SELINUX가 활성화 되었을때의 문제입니다. 위에 처럼 disabled로 바꿔주시고, 시스템을 재부팅해주세요.
다시 아파치 올리고 ioncube가 로드 되었는지 확인해주세요.


컴파일 오류시 대처하기

1.

configure: error: xml2-config not found. Please check your libxml2 installation.  에러날때
# yum install libxml2-devel

 

2.

configure: error: Please reinstall the BZip2 distribution   에러날때
해결책 :
[root@localhost local]# wget ftp://sources.redhat.com/pub/bzip2/v102/bzip2-1.0.2.tar.gz
Bzip2팩키지는 configure script가 없습니다. option을 한줄로 써서 컴파일 하고 설치합니다.
# cd bzip2-1.0.2
# make PREFIX=/tools install
# make clean
# cd ../php-5.2.11

 

3.

configure: error: libXpm.(a|so) not found   에러날때
# yum install gtk+ gtk+-devel

# yum install libXpm-devel

 

(# yum install xorg-x11-devel)

 

 

4.

configure: error: mcrypt.h not found. Please reinstall libmcrypt.   에러날때
# cd ..
# wget http://ftp.linux.co.kr/pub/etc/libmcrypt-2.5.7.tar.gz
# tar zxvfp libmcrypt-2.5.7.tar.gz
# cd libmcrypt-2.5.7
# ./configure && make && make install
# cd ../php-5.2.11

 

5.

/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [libphp5.la] Error 1   오류가 날때
# cd ..
# wget http://ftp.gnu.org/gnu/libtool/libtool-2.2.6a.tar.gz
# cd libtool-2.2.6
# ./configure
# make
# make install
# cd ../php-5.2.11

 

6.

overflow2 에러 발생시
~/php-5.3.4/ext/gd/gd.c (php를 받아서 압축을 푼 경로)


/*
        if (overflow2(font->nchars, font->h)) {
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error reading font, invalid font header");
                efree(font);
                php_stream_close(stream);
                RETURN_FALSE;
        }
        if (overflow2(font->nchars * font->h, font->w )) {
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error reading font, invalid font header");
                efree(font);
                php_stream_close(stream);
                RETURN_FALSE;
        }
*/ 해당 부분을 주석처리


'Dev > PHP' 카테고리의 다른 글

PHP CLI 예제 -> 명령행 옵션, argc argv 매개 변수 구하기  (0) 2011.05.13
php5.3 에 ioncube 설치하기  (0) 2011.05.13
php 컴파일에러  (0) 2011.05.13
php mssql 연동 (freetds)  (0) 2011.05.13
FreeTDS 설치 (PHP와 MS-SQL 연동)  (0) 2011.05.13
출처 : http://www.ysy2080.com/uribury/linuxno3/929
 

오류 메세지 : configure: error: xml2-config not found. Please check your libxml2 installation 
해결 방법 : yum install libxml2 libxml2-devel -y 

오류 메세지 : configure: error: Please reinstall the BZip2 distribution 
해결 방법 : yum -y install bzip2-devel 

오류 메세지 : configure: error: libjpeg.(a|so) not found. 
해결 방법 : yum -y install libjpeg-devel 

오류 메세지 : configure: error: libpng.(a|so) not found. 
해결 방법 : yum -y install libpng-devel 

오류 메세지 : configure: error: freetype.h not found. 
해결 방법 : yum -y install freetype-devel 

오류 메세지 : configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information. 
해결 방법 : yum -y install libc-client-devel 

오류 메세지 : configure: error: Kerberos libraries not found. 
해결 방법 : yum -y install krb5-devel 

오류 메세지 : configure: error:Cannot find OpenSSL's <evp.h> 
해결 방법 : yum -y install openssl-devel

 

checking for termcap functions library... configure: error: No curses/termcap library found
해결책 :  # yum -y install ncurses-devel

configure: error: C++ preprocessor "/lib/cpp" fails sanity check
해결책 : # yum -y install gcc-c++

/usr/lib/libdb-4.3.so: could not read symbols: File in wrong format
/usr/lib/libexpat.so: could not read symbols: File in wrong format

해결책 : # mv /usr/lib/libexpat.so /usr/lib/libexpat.so.bak
               # ln -s /lib64/libexpat.so.0.5.0 /usr/lib/libexpat.so 
               # mv /usr/lib/libdb-4.3.so /usr/lib/libdb-4.3.so.bak
               # ln -s /lib64/libdb-4.3.so /usr/lib/libdb-4.3.so
에러의 원인은 64비트 환경에서 32비트용 소스를 가져다가 설치하기 때문이다. 컴파일 도구와 관련된 심볼릭 링크 파일을 찾지 못한다고 나오고 있다.

configure: error: Unable to locate gmp.h
해결책 : # yum -y install gmp*

configure: error: not found. Please reinstall the expat distribution.
해결책 : # yum -y install expat*

configure: error: Please reinstall the libcurl distribution - easy.h should be in /include/curl/
해결책 : # yum -y install curl* 또는 yum -y install curl & yum -y install curl-devel

configure: error: Please reinstall libmcrypt - I cannot find mcrypt.h <br>
configure: error: Please reinstall libmhash - I cannot find mhash.h
해결책 : # yum install libmcrypt libmcrypt-devel libmhash libmhash-devel

Configure: error: xml2-config not found. Please check your libxml2 installation
해결책 : #yum install libxml2-devel

Checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's <evp.h>
해결책 : #yum install openssl-devel

Configure: error: Please reinstall the BZip2 distribution
해결책 : # yum install bzip2-devel

Configure: error: libjpeg.(also) not found.
해결책 : # yum install libjpeg-devel

Configure: error: libpng.(also) not found.
해결책 : yum install libpng-devel

Configure: error: freetype.h not found.
해결책 : #yum install freetype-devel

Configure: error: Cannot find MySQL header files under /usr.
Note that the MySQL client library is not bundled anymore!
해결책 : # yum install mysql-devel

Configure: error: Please reinstall the ncurses distribution
해결책 : # yum install ncurses-devel

Checking for unixODBC support... configure: error: ODBC header file '/usr/include/sqlext.h' not found!
해결책 : # yum install unixODBC-devel

Configure: error: Cannot find pspell
해결책 : # yum install pspell-devel

Configure: error: snmp.h not found. Check your SNMP installation.
# yum install net-snmp-devel

configure: error: ZLIB extension requires zlib >= 1.0.9

ln -sf /usr/lib64/libgssapi_krb5.so.2.2 /usr/lib/libgssapi_krb5.so
ln -sf /usr/lib64/libkrb5.so.3.3 /usr/lib/libkrb5.so
ln -sf /usr/lib64/libk5crypto.so.3.1 /usr/lib/libk5crypto.so
ln -sf /lib64/libcom_err.so.2 /usr/lib/libcom_err.so
ln -sf /usr/lib64/libgcrypt.so.11 /usr/lib/libgcrypt.so
ln -sf /usr/lib64/libgpg-error.so.0 /usr/lib/libgpg-error.so
ln -sf /usr/lib64/libexpat.so /usr/lib/libexpat.so
ln -sf /usr/lib64/libm.so /usr/lib/libm.so
ln -sf /usr/lib64/libssl.so /usr/lib/libssl.so

64bit os에서 php 5.2.6 configure 옵션에 --with-kerberos 옵션 넣어서 configure 진행했을경우 에러 나는 경우 조치 사항

krb5-devel 관련 라이브러리 파일을 /usr/lib64 에서 /usr/lib로 복사 링크

/usr/lib64/libdes425.a
/usr/lib64/libdes425.so
/usr/lib64/libgssapi_krb5.a
/usr/lib64/libgssapi_krb5.so
/usr/lib64/libgssrpc.a
/usr/lib64/libgssrpc.so
/usr/lib64/libk5crypto.a
/usr/lib64/libk5crypto.so
/usr/lib64/libkadm5clnt.a
/usr/lib64/libkadm5clnt.so
/usr/lib64/libkadm5srv.a
/usr/lib64/libkadm5srv.so
/usr/lib64/libkdb5.a
/usr/lib64/libkdb5.so
/usr/lib64/libkrb4.a
/usr/lib64/libkrb4.so
/usr/lib64/libkrb5.a
/usr/lib64/libkrb5.so

'Dev > PHP' 카테고리의 다른 글

php5.3 에 ioncube 설치하기  (0) 2011.05.13
컴파일 오류시 대처하기  (0) 2011.05.13
php mssql 연동 (freetds)  (0) 2011.05.13
FreeTDS 설치 (PHP와 MS-SQL 연동)  (0) 2011.05.13
CentOS 64bit Apache PHP 컴파일 설치  (2) 2011.05.13


출처 : http://woolab.net/140121930250

php와 mssql 연동

1. freetds 설치
# wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
# tar xvfz freetds-stable.tgz
# cd freetds-0.82
# ./configure --prefix=/usr/local/freetds \
--with-tdsver=8.0 \
--disable-odbc \
--disable-debug \
--enable-dbmfix \
--enable-msdblib
# make
# make install

2. php 컴파일
# ./configure ...... --with-mssql=/usr/local/freetds
* error: Directory /usr/local/freetds is not a FreeTDS installation directory 오류
# cp /usr/local/freetds-0.82/include/tds.h /usr/local/freetds/include/
* error: Could not find /usr/local/freetds/lib/libtds.a|so 오류
# cp /usr/local/freetds-0.82/src/tds/.lib/libds.a /usr/local/freetds/lib/
# make
# make install
# /usr/local/apache2/bin/apachectl restart

3. 확인 및 설정
- phpinfo
> mssql 확인
- php.ini
> mssql.charset =  "UTF-8"

4. yum 설치
# yum install -y freetds php-mssql
# /etc/freetds.conf
> [mssql_database]
> host = xxx.xxx.xxx.xxx
> port = 1433
> tds version = 8.0
> client charset = UTF-8

5. 접속 확인
# tsql -H xxx.xxx.xxx.xxx -p 1433 -U db_user_name -P db_user_password
> locale is "en_US.UTF-8"
> locale charset is "UTF-8"
> 1> select * from table_name
> 2> go

6. php 테스트
<?
$db_conn=mssql_connect("mssql_database", "db_user_name", "db_user_password");
mssql_select_db("database_name", $db_conn);
$sql="select count(*) from table_name";
$rs=mssql_query($sql, $db_conn);
echo "result";
echo mssql_result($rs, 0, 0);
mssql_close($db_conn);
?>

'Dev > PHP' 카테고리의 다른 글

컴파일 오류시 대처하기  (0) 2011.05.13
php 컴파일에러  (0) 2011.05.13
FreeTDS 설치 (PHP와 MS-SQL 연동)  (0) 2011.05.13
CentOS 64bit Apache PHP 컴파일 설치  (2) 2011.05.13
PHP Configure Option  (0) 2011.05.13

 

FreeTDS 설치 (PHP와 MS-SQL 연동)


Apache + PHP 사용시 원격 MSSQL 데이터베이스에 접근 하는 방법중 FreeTDS를 이용한 방법이 있습니다.
설치법도 간단하고 간단한 설정법으로 한글깨짐현상도 해결할 수 있습니다.


[설치]
/usr/local/src#
 wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz

/usr/local/src# tar xvfpz freetds-stable.tgz

/usr/local/src/freetds# ./configure 
--prefix=/usr/local/freetds 
--with-tdsver=8.0 
--disable-odbc 
--disable-debug 
--enable-dbmfix 
--enable-msdblib

/usr/local/src/freetds# make

/usr/local/src/freetds#
 make install


[참고]

mssql 2005 의 경우 --with-tdsver=8.0

mssql 2000 의 경우 --with-tdsver=8.0

mssql 7.0 의 경우 --with-tdsver=7.0

mssql 6.0 의 경우 --with-tdsver=4.2

 

configure 단계에서 'Directory /usr/local/freetds is not a FreeTDS installation directory' 라는 메시지가 나올경우
# cp /usr/local/src/freetds/include/tds.h /usr/local/freetds/include/
또는
# cp /usr/local/src/freetds/src/tds/.libs/tds.h /usr/local/freetds/include/
tds.h 파일을 설치된 디렉토리에 복사한다.


[설치 계속]

freetds.conf 파일에 client charset=EUC-KR을 추가하여 한글깨짐 현상을 막을 수 있습니다..
( /usr/local/freetds/etc/freetds.conf )

[global]
client charset = EUC-KR


PHP 설치

/usr/local/src/php# ./configure 
--prefix=/usr/local/php 
--with-apxs2=/usr/local/bin/apxs
--with-sybase=/usr/local/freetds
--with-mssql=/usr/local/freetds    <- 하단 참고사항 확인


/usr/local/src/php# make
/usr/local/src/php# make install

[참고] php 5.X --with-mssql 오류시 해결 방안  

php 5.X에서 mssql연동을 위해 freetds를 설치할 경우에  php configure에 --with-mssql=/usr/local/freetds로 주었을때 해당 경로에 설치가 되어있음에도 불구하고 해당 경로에 설치가 되어있지 않다고 나오는 경우가 발생합니다.

에러 메세지
error Directory /usr/local/freetds is not a FreeTDS installation directory

해당 문제는 tds.h, libtds.a가 해당 설치경로에 있지 않아 설치되어 있는데도 설치되어 있지 않은것으로 인식되는 문제로 보입니다.

아래와 같이 해당 파일들을 경로로 복사해 주면 문제가 해결 됩니다.

cp /usr/local/src/freetds-xxx/include/tds.h /usr/local/freetds/include
cp /usr/local/src/freetds-xxx/src/tds/.libs/libtds.a /usr/local/freetds/lib

위와 같이 한 후에 make 과정중에 sysbase 오류가 발생한다면 configure 시에 --with-mssql과 --with-sybase를 같이 넣어 줍니다.


[참고 - PHP와 MS-SQL연동을 위해 odbc를 이용한 방법 - 오래된메뉴얼]
http://cafe.naver.com/webmas.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1000

 

 

[출처] 정상을 위한 독주2 (http://blueb.net/blog/1321) | 블루비

[추가/수정] 차동훈 (http://system.neulwon.com)

 

--------------------------------------------------------------------------------------

 

php - mssql 연동 테스트 소스

 

<?

$connection=mssql_connect("MyServer","msconn","msconn");
print ("db open");
mssql_connect($connection);
print ("db close");
$status = mssql_select_db("master",$connection);

if (!$status) {
$errNO = mssql_errno($connection);
$errMSG = mssql_errno($connection);

echo("데이터 베이스 연결 실패");
echo("에러메세지 $errNO : $errMSG");
exit;
}


$que = mssql_query("select * from sysfiles");
$row = mssql_fetch_row($que);

echo"

$row[0] $row[1] $row[2]";

echo"
성공";
?>

[발췌] Nugi's World | 야서누기 (http://blog.daum.net/evasuri/10243883)

'Dev > PHP' 카테고리의 다른 글

php 컴파일에러  (0) 2011.05.13
php mssql 연동 (freetds)  (0) 2011.05.13
CentOS 64bit Apache PHP 컴파일 설치  (2) 2011.05.13
PHP Configure Option  (0) 2011.05.13
PHP 암호화 함수정리  (0) 2011.05.07

+ Recent posts