본문 바로가기

PHP

[PHP 확장모듈] 리눅스(CentOS) PHP 확장 모듈 개발 환경 구성 및 개발 - 2

반응형

리눅스(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 파일에 설정해둔 경로를 확인 해보고 차근차근 이것저것 확인 해볼것..

끝 ~​

반응형