먼저 PHP 확장에는 두 가지 컴파일 방법이 있다는 점을 설명하겠습니다.
방법 1: PHP 컴파일 시 확장을 직접 컴파일
방법 2: 확장을 .so 파일로 컴파일하여 구성합니다. php.ini 로드 경로;
PHP 확장을 생성하고 컴파일하는 단계는 아래에 설명되어 있습니다.
PHP 소스 코드를 다운로드하고 압축을 푼 다음 소스 코드의 루트 디렉터리에서 작업을 시작합니다. ,
1. 다음과 같이 ext_skel을 사용하여 확장 프레임워크를 생성합니다.
➜ php-5.6.24 cd ~/Downloads/tmp/php-5.6.24➜ php-5.6.24 cd ext
➜ ext ./ext_skel --extname=myfirstext
ext_skel이 실행된 후 개발자에게 후속 단계를 묻는 메시지가 표시됩니다. 두 가지 확장 단계 중 첫 번째 단계입니다.
To use your new extension, you will have to execute the following steps: $ cd .. $ vi ext/plogger/config.m4 $ ./buildconf $ ./configure --[with|enable]-plogger $ make $ ./sapi/cli/php -f ext/plogger/plogger.php $ vi ext/plogger/plogger.c $ make
2. ext/myfirstext/config.m4 파일을 수정합니다
설정 시 이 확장 명령 옵션을 활성화하는 데 사용되는 line10-18의 코드에 중점을 둡니다. ./line16 및 line18의 dnl을 구성하고 삭제합니다. dnl을 주석 문자로 이해합니다.
dnl Otherwise use enable: 16 dnl PHP_ARG_ENABLE(myfirstext, whether to enable myfirstext support, dnl Make sure that the comment is aligned: dnl [ --enable-myfirstext Enable myfirstext support]) 20 if test "$PHP_MYFIRSTEXT" != "no"; then dnl Write more examples of tests here...
위의 두 단계는 공통적입니다. 다음은 PHP 확장을 컴파일하는 두 가지 방법을 소개합니다.
방법 1: PHP를 컴파일할 때 확장을 직접 컴파일합니다.
3. root 해당 디렉터리에서 다음과 같이 ./buildconf를 실행합니다
4. 소스코드 루트 디렉터리에서 ./configure –enable-myfirstext를 실행합니다
컴파일 시간을 줄이기 위해 컴파일 도중 특정 모듈을 컴파일하지 않도록 지정할 수 있습니다. 구성 단계(예:
./configure --without-iconv --enable-debug --enable-myfirstext --disable-cgi --enable-cli --without-pear --disable-xml) --without-mysql
5. 소스 코드 루트 디렉터리에서 make
를 실행합니다. 컴파일이 성공한 후에는 make install을 실행하지 마세요. 이 시점에서는 확장자가 myfirstext이기 때문입니다. 성공적으로 컴파일되었으며 해당 PHP 바이너리 파일이 생성되었습니다. ./sapi/cli/php
방법 2: 확장 프로그램을 .so 파일로 컴파일하고 로딩 경로를 다음에서 구성합니다. php.ini
3. 확장 디렉터리 ext/myfirstext/
에서 phpize 명령을 실행합니다. 4. 확장 디렉터리 ext/myfirstext/
에서 ./configure –enable-myfirstext 명령을 실행합니다. 확장 디렉터리 ext/myfirstext/
make 실행 후 ext/myfirstext/modules 아래에 생성됩니다. 해당 .so 파일은 php.ini에서 구성하고 이 파일을 로드합니다.
확장 프로그램이 성공적으로 로드되었는지 확인
./sapi/cli/php -f ext/myfirstext/myfirstext.php를 실행
또는 php -m을 통해 모든 확장 프로그램을 나열하여 myfirstext가 있는지 확인하세요. ./sapi/cli/php -m | grep myfirstext
명령을 실행합니다. 위의 확인이 통과되면 확장이 성공적으로 컴파일되었음을 의미합니다. 하지만 지금까지 C 관련 코드를 편집하지 않았습니다. 모든 것이 기본적으로 ext_skel에 의해 생성됩니다. 이 확장 기능 myfirstext에는 어떤 기능이 포함되어 있는지 확인하세요. 다음과 같습니다:
➜ php-5.6.24 ./sapi/cli/php -r 'print_r(get_extension_funcs("myfirstext"));'
좋아요, 지금까지는 익숙합니다. PHP 확장 프레임워크의 생성, 구성 및 컴파일. 다음으로 myfirstext 확장에 자체 함수를 추가해야 합니다.