1. 개발 준비
WAMP를 설치하는데, 사용된 버전은 WampServer Version 2.5이며, 그 중 PHP 버전은 5.5.12입니다.
WAMP 설치 디렉터리: D:wamp
apache 디렉터리: D:wampbinapache
php 디렉터리: D:wampbinphp
PHP-5.5.12 소스 코드 패키지를 다운로드하고 임의의 디렉터리에 압축을 풉니다. 예: E:php-5.5.12
2. phpinfo()를 통해 php 버전의 컴파일 관련 정보를 쿼리합니다. 주로 다음을 확인합니다.
CompilerMSVC11(Visual C++ 2012)
아키텍처 x86
Zend Extension BuildAPI220121212,TS,VC11
PHP Extension BuildAPI20121212,TS,VC11
보시다시피 위 정보에서 WampServer 2.5의 PHP는 MSVC11(VS2012)을 통해 x86(win32)에서 컴파일되며 TS(Thread Safe) 속성이 설정되어 있습니다.
따라서 확장 플러그인 컴파일 시에도 동일한 컴파일 환경과 TS 설정을 사용해야 합니다(기본값은 TS)
3. 플러그인 컴파일 시 필요한 config.w32.h 파일을 생성합니다
"VS2012 개발자 명령 프롬프트"를 열고 E:php-5.5.12 디렉터리를 입력합니다.
현재 디렉터리에configure.js 파일을 생성하는 buildconf.bat 명령을 실행합니다.
configure 명령을 실행합니다. E:php-5.5.12mainconfig .w32.h 파일을 생성합니다.
실행 중 bison 관련 오류가 발생하면 bison이 설치되지 않았다는 의미입니다.configure.js 파일을 열고 다음 세 줄을 주석 처리한 후 구성 명령을 다시 실행하면 됩니다.
if (!PATH_PROG('bison')) {
ERROR('bison이 필요합니다')
}
왜 이것이 필요하지 않습니까? 확장 플러그인을 컴파일하려면 config.w32.h 파일만 생성하면 됩니다.
4. 컴파일 파일 준비
E:php-5.5.12ext 디렉토리에 들어가서 E:php-5.5.12extskeleton 디렉토리를 복사하여 개발에 필요한 플러그인 이름으로 바꿉니다.
php_skeleton .h, Skeleton.c 및 Skeleton.dsp의 이름이 php_my_plugin.h, my_plugin.c 및 my_plugin.dsp로 변경되었습니다.
위의 세 파일을 각각 열고 파일에서 extname을 바꿉니다. my_plugin 및 EXTNAME과 MY_PLUGIN(대소문자가 일치하는지 확인)
D:wampbinphpphp5.5.12devphp5ts.lib를 my_plugin 디렉토리에 복사합니다.
5. 플러그인 컴파일 및 설치
VS2012를 사용하여 my_plugin.dsp 파일을 열고 Release_TS(릴리스 버전 생성)를 선택한 후 C 코드로 컴파일을 구성합니다(솔루션 속성-구성 속성-C/C++-고급). -컴파일 - C 코드(/TC)로 컴파일)
솔루션을 컴파일하고 플러그인에 해당하는 php_my_plugin.dll 파일을 생성합니다(E:php-5.5.12Release_TS 디렉터리에 있음). 컴파일된 dll 파일을 Wamp PHP 확장 디렉터리(D:wampbinphpphp5.5.12ext)에 복사합니다.
D:wampbinapacheapache2.4.9binphp.ini 파일을 편집하고 "extension=" 키워드를 검색한 후 "extension=php_my_plugin.dll을 추가합니다. " 원본 PHP 플러그인 뒤에;
특별 참고 사항: 편집된 php.ini는 D:wampbinphpphp5.5.12php.ini가 아닙니다. 왜냐하면 Wamp가 PHP를 초기화할 때 읽기 위치는 D:wampbinapacheapache2.4.9binphp.ini이기 때문입니다. 파일.
Apache 서버를 다시 시작합니다.
6. 플러그인 테스트
플러그인이 성공적으로 로드되면 Apache 서버를 다시 시작하고 phpinfo()에 액세스하여 새로 추가된 my_plugin 플러그인을 확인하세요.
my_plugin_test.php 파일을 생성하여 D:wampwww 디렉터리에 넣습니다. 파일 내용은 다음과 같습니다.
echo verify_my_plugin_compiled("my_plugin");
?>
브라우저를 사용하여 위에서 새로 생성된 my_plugin_test.php 파일에 접속하면 플러그인이 정상적으로 실행되고 있음을 나타내는 다음 페이지가 나타납니다.
축하합니다. ext/my_plugin/config.m4 모듈을 수정했습니다. my_plugin은 이제 PHP로 컴파일됩니다.