2012년 3월 20일 화요일

php(5.2버전) mysqli 추가하기

php를 설치할때 추가할 모듈을 미리 결정하는 것이 중요합니다..



mysqli는 mysqli_connect시 mysql_connect 함수보다 속도면에서 뛰어나다고 합니다.
mysqli 모듈을 설치하기 위해서는 설치시 다음과 같은 옵션을 넣고 컴파일 합니다.




--with-mysqli=/usr/local/mysql/bin/mysql_config
 







php 재컴파일 없이 동적모듈로 추가는 다음과 같이 진행합니다.




php 소스폴더의 mysqli 폴더로 이동합니다. 대게 이런경로 입니다.

# cd /usr/local/src/php-5.2.0/ext/mysqli


그 다음에 phpize를 실행합니다.

#/usr/local/php/bin/phpize


configure 그리고 make

mysqli 설치과정에서 php 5.2 버전대에서 make시에 오류가 발생하는 경우가 있습니다.

make 명령어를 실행했을때 아래와 같은 error 메시지가 출력됩니다.
/usr/local/php/ext/mysqli/mysqli_api.c: In function 'zif_mysqli_stmt_bind_param':
/usr/local/php/ext/mysqli/mysqli_api.c:144: error: 'gptr' undeclared (first use in this function)
/usr/local/php/ext/mysqli/mysqli_api.c:144: error: (Each undeclared identifier is reported only once
/usr/local/php/ext/mysqli/mysqli_api.c:144: error: for each function it appears in.)
/usr/local/php/ext/mysqli/mysqli_api.c: In function 'zif_mysqli_stmt_execute':
/usr/local/php/ext/mysqli/mysqli_api.c:603: error: 'gptr' undeclared (first use in this function)



이때는
# vi /usr/local/php/ext/mysqli/mysqli_api.c

파일을 열어서 144줄, 150줄, 603줄, 607줄에 있는 gptr을 char*로 변경하여 저장한 후에 make를 실행하면 잘됩니다.  



make install은 하지 않아도 됩니다.

# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config
# make



그리고 이 과정에서 생성된 확장모듈 파일을 넣어둘 폴더를 생성합니다.

# mkdir /usr/local/php/extensions


그리고 mysqli 모듈을 생성한 폴더로 복사

# cp /usr/local/src/php-5.2.0/ext/mysqli/modules/*.* /usr/local/php/extensions/


그리고 php.ini 파일을 열어서 아래의 내용을 추가해줍니다.


extension_dir = "/usr/local/php/extensions"
extension = mysqli.so



그리고 아파치를 재시작하면 mysqli 가 적용된 것을 phpinfo()를 통해 확인할 수 있습니다.