>  기사  >  백엔드 개발  >  PHP C 확장에 대한 예비 연구

PHP C 확장에 대한 예비 연구

WBOY
WBOY원래의
2016-07-29 08:55:381644검색

참고

환경:

<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를 열 수 없습니다: 해당 파일이 없습니다"라는 메시지가 표시됩니다.

PHP  C扩展初探 ext_skel을 보면 따라서 skel의 경로를 지정해야 합니다
원래 newext 디렉토리를 삭제하고 다시 살펴보세요

$ ./ext_skel --extname=newext --skel=/usr/lib/php5/skeleton 성공 후

PHP  C扩展初探

을 반환합니다. 프롬프트에 따라 /newext2/config.m4


PHP  C扩展初探

<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>
의 설명을 변경해야 합니다. 여기에 주의가 필요합니다. 불규칙한 오류가 나타나면 php-config 경로가 올바른지 확인해야 합니다

컴파일이 성공하면 다음과 같습니다

PHP  C扩展初探

<code><span>$make</span> test 
<span>$make</span> install</code>
그런 다음 php.ini 파일을 수정합니다

확장자 추가 = newext2.so
cli 모드와 cgi 모드의 php.ini 파일은 다르다는 점에 유의하세요. 처음 실험을 시작했을 때 cli 모드에서

<code><span>$usr</span>/bin/php <span>-m</span></code>
을 사용해도 newext2

의 확장자를 찾지 못했다는 사실을 발견했습니다. 나중에 cgi에서 phpinfo를 출력해보면 알 수 있어요
나중에 cli에서 phpinfo를 출력하고 php.ini 경로를 찾아서 수정하고 마침내 성공했습니다
콘솔의 phpinfo 출력이 너무 큰 경우 다음 방법

<code><span>$ </span>php phpinfo.php | less
</code>
을 사용하여 경로를 찾아 변경할 수 있습니다


PHP  C扩展初探 수정 후 아파치를 다시 시작하는 것을 잊지 마세요

인터넷에 관련 튜토리얼이 많이 있습니다. "PHP와 신기술 및 모범 사례"의 7장을 참조하여 실제 작업에서 직면한 문제를 요약했습니다. 컴파일하지 않고 PHP를 설치할 때 가장 중요한 것은 구성 파일의 경로에 주의하는 것입니다.

').addClass('사전 번호 매기기').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); }); 이상에서는 PHP C 확장에 대한 예비 연구를 그 측면을 포함하여 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 함수 분할다음 기사:PHP 함수 분할