리눅스(CentOS) PHP 확장 모듈 개발 환경 구성 및 개발 - 2
1장에서 개발 및 테스트를 위한 환경을 모두 구축 했으니 이제 개발을 해보자.
php 의 소스가 있는 디렉토리에 가보면
ext 라는 이름의 디렉토리가 있다.
해당 디렉토리에 가면 ext_skel 이라는 실행 파일이 있는데 이걸 통해
자신이 개발하고자 하는 모듈의 디렉토리와 필요한 파일 및 샘플을 자동으로 생성할 수 있다.
./ext_skel --exname=my_test
--extname="모듈명"
위와 같은 옵션을 주고 실행하면 ext 안에 my_test 라는 디렉토리가 생성되고
그 안에 들어가보면 다양한 파일들이 생성돼있다.
ext_skel 을 이용해 자동으로 생성된 파일을 열어 보자 !!
php_my_test.h
헤더 파일안의 내용이다. 위와 같이 내가 설정한 my_test 라는 모듈의 이름으로 여러 선언이 돼있다.
다양한 내용이 선언돼 있지만 빨간 네모안에 있는 부분이 내가 사용할 함수의 선언문이다.
최초 자동으로 생성해주는 샘플 엔 내가 처음에 만들때 사용한 extname 으로 모든게 선언된다.
( 네모칸 위에 있는 부분은 아직 정확하게 테스트 해보질 못해서, 추후에 정리할 예정. )
my_test.c
소스 파일을 열어보면 아까 헤더파일에 빨간 네모 안에서 선언되있던 함수가 있는데, 기타 샘플 소스의 헬로우 월드와 비슷하게 성공 메시지를 리턴해주는 소스가 짜여 있다.
자신이 개발하고자 하는 부분을 여기에 작성 하면 된다.
일단 간단한 테스트를 위해 파일을 수정 하지 않고, 닫은뒤 컴파일하고 테스트를 진행 !
컴파일을 하기 위해 config.m4 파일을 수정 해준다.
빨간 네모칸에 있는 PHP_ARG_WITH 을 찾아서 dnl 주석문을 삭제해 주면 되는데, 해당 그림은 이미 삭제한 후의 그림이다
원래는 PHP_ARG_WITH , [ --with-my_test 가 있는 두개의 라인이 주석으로 막혀있다.
dnl 이라는 주석문만 삭제해 주고 저장하고 닫으면 된다.
이제 컴파일을 진행하자.
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
( 자신의 프로파일에 PHP의 경로를 추가 했다면 굳이 위에서 처럼 절대경로를 주거나 --with-php-config 옵션을 주지 않아도 된다. )
위와 같은 순서로 입력하면 컴파일이 완료되고 "modules" 라는 디렉토리가 생성되고 그안에 내가 만든 모듈이 위치해 있다.
my_test.so
이제 해당 모듈을 테스트 해보자 !
우선 1장에서 옮겨 두었던 php.ini 파일을 열어
extension_dir=/usr/local/php/lib
extension=my_test.so
위 내용을 추가하고 저장.
extension_dir 은 extension 을 해줄 모듈이 있는 위치를 말하고
extension 은 모듈의 이름및 확장자를 써주면 된다.
( 모듈의 경로는 자기가 원하는 부분으로 해도 이상 없음. )
이제 php.ini 파일에 설정 해둔 extension_dir 의 경로에 방금 만든 my_test.so 를 복사 혹은 이동 해주고
내가 만든 모듈의 디렉토리에 있는 "my_test.php" 파일을 이용해 테스트를 진행 하면 된다.
( ext_skel 로 모듈을 생성할때 샘플로 제공해주는 .php 파일로 정상적으로 모듈이 로드 되는지 확인이 가능 하다 )
/usr/local/php/bin/php -f my_test.php
위 명령어를 수행해 정상적으로 문구가 나오면 성공 !
비정상적일 경우엔 모듈의 위치와 php.ini 파일에 설정해둔 경로를 확인 해보고 차근차근 이것저것 확인 해볼것..
끝 ~
'PHP' 카테고리의 다른 글
[PHP 환경구성] PHP의 TS / NTS 변경 방법. (0) | 2014.05.28 |
---|---|
[PHP 확장모듈] zend_parse_parameters() 를 이용한 인자값 받기. (0) | 2014.05.28 |
[PHP 확장모듈] 리눅스(CentOS) PHP 확장 모듈 개발 환경 구성 및 개발 - 1 (0) | 2014.05.28 |