참고
환경:
<code> ubuntu14.4 php5.5.9 通过apt-get 安装 </code>
컴파일해서 설치한 php와 다르기 때문에 확장을 위해서는 php 소스코드를 다시 다운로드 받아야 합니다.
<code>$ <span>sudo</span> apt-get <span>source</span> php5 </code>
저장 디렉터리를 사용자 정의할 수 있습니다.
소스코드 파일을 열고 ext를 입력하면 여기에 확장자가 많이 저장되어 있는 것을 볼 수 있습니다
여기에서 PHP 소스 코드의 주요 디렉토리와 기능에 대해 알아볼 수 있습니다
./main에는 PHP 기본 매크로 정의가 포함되어 있습니다
./pear에는 PEAR 코어 파일이 포함되어 있습니다
./sapi에는 다양한 서버 추상화 계층 코드가 포함되어 있습니다
./Zend에는 엔진의 모든 파일이 포함되어 있습니다
컴파일 및 설치 중에 내장되는 php-dev 패키지를 사용해야 합니다. $sudo apt-get install php5-dev
$phpize-v
설치가 성공했는지 확인하세요
확장 프로그램을 공식적으로 시작하세요
ext_skel을 사용하세요. 이 파일은 ext 디렉터리 $./ext_skel --extname=newext
에 있습니다.
이 명령은 많은 튜토리얼에서 사용되는데, 사용 중에 후속 프로세스에서 newext.c 파일을 찾을 수 없다는 것을 발견했습니다
지금 작업을 검색해 보면 "/skeleton.c를 열 수 없습니다: 해당 파일이 없습니다"라는 메시지가 표시됩니다.
ext_skel을 보면
따라서 skel의 경로를 지정해야 합니다
원래 newext 디렉토리를 삭제하고 다시 살펴보세요 $ ./ext_skel --extname=newext --skel=/usr/lib/php5/skeleton
성공 후
<code><span>$cd</span> newext2 <span>$phpize</span> $<span>.</span>/configure <span>--</span><span>with</span><span>-php</span><span>-config</span><span>=</span>/usr/bin/php<span>-config</span><span>$make</span></code>
컴파일이 성공하면 다음과 같습니다
<code><span>$make</span> test <span>$make</span> install</code>
확장자 추가 = newext2.so
cli 모드와 cgi 모드의 php.ini 파일은 다르다는 점에 유의하세요. 처음 실험을 시작했을 때 cli 모드에서
<code><span>$usr</span>/bin/php <span>-m</span></code>
의 확장자를 찾지 못했다는 사실을 발견했습니다.
나중에 cgi에서 phpinfo를 출력해보면 알 수 있어요
나중에 cli에서 phpinfo를 출력하고 php.ini 경로를 찾아서 수정하고 마침내 성공했습니다
콘솔의 phpinfo 출력이 너무 큰 경우 다음 방법
<code><span>$ </span>php phpinfo.php | less </code>
수정 후 아파치를 다시 시작하는 것을 잊지 마세요