|
php에 추가적인 기능을 확장하기 위한 방법으로 PHP 확장 모듈을 제작해서 extension으로 올리거나 php와 같이 기본적으로 포함시켜 compile하여 설치하는 방법이 있다. extension으로 추가하는 것은 php를 다시 설치해야하는 번거로움을 없애고, 기능 추가 및 관리 등의 익점을 가진다. 우선 이런 확장 모듈을 만들기 위해선 여러방법이 있지만, 기본적으로 php에 제공하는 ext_skel을 이용하는 방법을 보면, php를 설치한 디렉토리(여기선 php-5.2.9를 가지고 설명)에서 보면 ./php-5.2.9/ext/ext_skel 을 볼수 있다. 그럼 ext_skel을 가지고 php확장 모듈을 위한 준비작업을 시작한다. # ./ext_skel --extname="만들고자하는 확장 모듈의 이름" 을 실행시키면 확장 모듈을 만드는데 필요한 기본적인 디렉토리와 파일이 생성되고 확장 모듈을 만들기 위한 설명이 나온다. To use your new extension, you will have to execute the following steps: 1. $ cd .. 2. $ vi ext/ppp/config.m4 3. $ ./buildconf 4. $ ./configure --[with|enable]-ppp 5. $ make 6. $ ./php -f ext/ppp/ppp.php 7. $ vi ext/ppp/ppp.c 8. $ make 앞으로 해당 과정만 따라서 프로그래밍하면 php확장 모듈을 만들수 있다. 그러나 위와 같은 방법을 사용하게되면 프로그램을 수정하거나 디버깅하기 위해서 php코드 전체를 compile하고 다시 설치해야하는 엄청난 수고와 시간이 들게된다. 그리고 위의 방법은 php의 바이너리 파일안에 확장하고자하는 모듈이 삽입된채로 설치가된다. 위의 방법을 따르지 않고 새로 생성된 ppp의 디렉토리안에 있는 config.m4파일을 수정하여 phpize를 이용하면 php전체를 compile && make && make install 이라는 과정이 필요없어진다. ppp라는 모듈만 따로 수정 compile, 설치, 디버깅 등을 하기 위해서 config.m4를 수정하는데 지금은 우선 기본골격만 만들기 위한것이므로 자세한 세팅보다는 우선 해당 샘플이 잘되는지 확인하는 정도만 소개한다. # cd ppp # vi config.m4 로 config.m4파일을 열고 dnl PHP_ARG_WITH(ppp, for ppp support, dnl [ --with-ppp Include ppp support]) 에서 dnl을 삭제후 해당 파일을 저장하고 나온다. # phpize # ./configure # make 수행해서 정상적으로 compile이 끝나면, 해당 디렉토리에 module 디렉토리안에 ppp.so 파일이 생성되게된다. ppp.so파일을 php.ini에 extension_dir=에 성정된 디렉토리안으로 복사해 놓는다. 위의 과정이 모두 끝나면 php -f ppp.php를 수행한다. 수행 결과 Functions available in the test extension: confirm_ppp_compiled Congratulations! You have successfully modified ext/ppp/config.m4. Module ppp is now compiled into PHP. 축하 메시지가 나오면 정상적인 확장모듈 개발 준비가된 기본 골격이 완성된것이다. 앞으로는 ppp.c에 추가 개발해서 위의 과정을 거쳐서 다시 추가하고 php에서 유용하게 개발한 확장 기능을 사용하면된다. |






Recent Comment