2017. 7. 27. 14:43ㆍServer
리눅스에서.
php 소스 컴파일이 완료된 상태에서.
mssql을 사용해야하는 상황이 발생함.
phpize을 사용 해서 확장모듈로 실행함.
- php 5.3.8기준
1. 일단 freetds 링크 확인
freetds 선택 : ftp://ftp.freetds.org/pub/freetds/
가서 다운로드 링크 복사를 한다.
난 0.91이 안되서 0.95로 변경 했음.
2. 진행
[freetds]
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-0.95.tar.gz
tar -zxvf freetds-0.95.tar.gz
cd freetds-0.95.tar.gz
./configure --prefix=/usr/local/freetds --with-tdsver=9.0 --disable-odbc --disable-debug --enable-msdblib
make
make install
wget으로 받은뒤,
압축 풀고,
들어가서,
configure 셋 하고,
make && make install 진행
[phpize]
cd (php-5.3.8 설치파일 있는 경로, 소스컴파일 진행했던 php 폴더)/ext/mssql경로로 진입.
/usr/local/php/bin/phpize 실행(php 설치 된 경로)
이런 에러가 뜰 수 있음.
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
[해결 방법]
m4 와 autoconf 다운로드, URL (ftp.gnu.org에서 링크 확인 - http://ftp.gnu.org/gnu/ )
# wget http://ftp.gnu.org/gnu/m4/m4-1.4.18.tar.gz
# tar -zxvf m4-1.4.18.tar.gz
# cd m4-1.4.18
# ./configure && make && make install
# wget http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
# tar -zxvf m4-1.4.18.tar.gz
# autoconf-latest.tar.gz
# cd autoconf-latest
# ./configure && make && make install
다시 phpize실행.
에러가 안뜨고 버전정보가 잘 맞다면 제대로 된것 같은 느낌의 문구가 뜸.
이제 폴더 파일들을 다시 확인을 해보면 파일 갯수가 달라진것이 보이고,
./configure --with-mssql=/usr/local/freetds --with-php-config=/usr/local/php/bin/php-config
make
make install
을 쳐주면
.so파일이 설치 된(php설정에 따른) 폴더 경로가 보임.
그 경로로 가보면 mssql.so파일이 있음.
[ php.ini 설정 ]
그 mssql.so 파일을 php.ini 설정에 가서 로드 해야 되겠지?
extension_dir <- 확인하고.
extension=mssql.so <- 지정
[ freetds.conf 설정 ]
[global]
# TDS protocol version
; tds version = 5.0
# Whether to write a TDSDUMP file for diagnostic purposes
# (setting this to /tmp is insecure on a multi-user system)
; dump file = /tmp/freetds.log
; debug flags = 0xffff
# Command and connection timeouts
; timeout = 10
; connect timeout = 10
# If you get out-of-memory errors, it may mean that your client
# is trying to allocate a huge buffer for a TEXT field.
# Try setting 'text size' to a more reasonable limit
text size = 64512
[db설정 이름]
host = 1.234.56.78
port = 1433
tds version = 8.0
난..9.0으로 설정했을때는 안되다가.. 8.0으로하니까 잘되더라.. 이건 왜그런거지...
버전을 돌려가면서 아파치 재시작 하면서 해봐야 할듯.
안된다고 make clean이나..
디렉터리 삭제나..
짜증나 슈바 init 6 ! 하지 말고...
시간적 여유를 갖고 해봐아...
에러가 난다면 말이지...
[실행해봐야지 php에서 ? ]
$ms_db = "mssql 데이터베이스 이름";
$ms_server = "위에서 지정한 db설정 이름"; 혹은 아이피:포트
$ms_user = "아이디";
$ms_password = "패스워드";
#이건 혹시나.. mssql.so가 확장모듈 로딩이 됬는지 확인하는 차원에서... 해본....것...
if(!extension_loaded('mssql')) {
dl('mssql.' . PHP_SHLIB_SUFFIX);
extension_loaded('mssql');
}
$ms_conn = mssql_connect($ms_server, $ms_user, $ms_password) or die("Couldn't connect to SQL Server on $myServer. Error: " . mssql_get_last_message());
mssql_select_db($ms_db, $ms_conn);
난 잘되더라.. 삽질아닌 시행착오를 몇번 하니까.........
[추가]
다른서버에 다시 하니까 다른 에러가 하나 뜨던데..
php_mssql.lo error 1
php_mssql.lo 에러 1
이런식으로 끝나는
그...sqlfront.h와 관련된...
아..에러가 기억안난다..
암튼 두번째 make를 실행할때
LPBYTE가 어쩌구 라고 뜬다면..
다시 맨처음으로 올라가서 다운받았던 디렉터리 안에 include 안에
sqlfront.h를 수정 해주자.
라인넘버 36번째
typedef BYTE * LPBYTE 어쩌구 에러 나는데
/* typedef BYTE * LPBYTE */
로 주석 처리 해 주고 다시 맨처음 config 부터 다시 시작해보자. 그럼 잘된다.
'Server' 카테고리의 다른 글
[리눅스] date 명령어(펌) (0) | 2020.03.25 |
---|---|
centos 설치 시 [sda에는 gpt 디스크 라벨이 있어야 합니다.] (0) | 2018.02.06 |
[리눅스] CentOS 버전 확인 (0) | 2017.07.13 |
[윈도우서버] 원격 데스트톱 동시 접속자 수 변경 (0) | 2016.06.16 |
X-Frame-Options (0) | 2015.08.20 |