>  기사  >  백엔드 개발  >  LINUX 환경을 위한 PHP 확장 개발 코드 예제 공유

LINUX 환경을 위한 PHP 확장 개발 코드 예제 공유

黄舟
黄舟원래의
2017-03-22 10:05:001330검색


LINUX 환경에서 PHP Extension을 개발하는 단계는 다음과 같습니다.

1. PHP 소스 코드를 다운로드하고 압축을 푼다. 디렉토리는 다음과 같습니다: /root /lamp/php-5.5.37

2. /root/lamp/php-5.5.37/ext 디렉토리로 이동하여 test_extension.def 파일

int a(int x, int y)string b(string str, int n)
3.

FrameworkGenerator 확장을 통해 프레임워크 디렉터리 를 생성합니다. ext_skel –extname=test_extension –proto=test_extension.def
성공적인 생성 결과는 다음과 같습니다.

Creating directory test_extension
awk: /root/lamp/php-5.5.37/ext/skeleton/create_stubs:56: warning: escape sequence `\|' treated as plain `|'
Creating basic files: config.m4 config.w32 .svnignore test_extension.c php_test_extension.h CREDITS EXPERIMENTAL tests/001.phpt test_extension.
php [done].To use your new extension, you will have to execute the following steps:
1.  $ cd ..
2.  $ vi ext/test_extension/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-test_extension
5.  $ make
6.  $ ./sapi/cli/php -f ext/test_extension/test_extension.php
7.  $ vi ext/test_extension/test_extension.c
8.  $ make
Repeat steps 3-6 until you are satisfied with ext/test_extension/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.

4. 생성된 프레임워크 디렉터리로 전환합니다: cd test_extension

5.
구성 파일 config.m4를 수정하고 첫 번째 줄을 제거합니다. 10, 11, 12. dnl은 다음과 같습니다

PHP_ARG_WITH(test_extension, for test_extension support,
Make sure that the comment is aligned:
[  --with-test_extension             Include test_extension support])

6.

함수의 함수를 구현하고, vi test_extension.c, 수정된 함수 a, b는 다음과 같습니다

PHP_FUNCTION(a)
{        
int argc = ZEND_NUM_ARGS();        
long x;        
long y;        
if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)
        {
                php_error(E_WARNING, "zend_parse_parameters failure!");                
                return;
        }
        RETURN_LONG(x + y);
}

PHP_FUNCTION(b)
{        
char *str = NULL;        
int argc = ZEND_NUM_ARGS();        
int str_len;        
long n;        
char *result;        
char *ptr;        
int result_length;        
if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)
        {
        
                php_error(E_WARNING, "zend_parse_parameters failure!");                
                return;
        }
        result_length = str_len * n;
        result = (char *) emalloc(result_length + 1);
        ptr = result;        while (n--) {
                memcpy(ptr, str, str_len);
                ptr += str_len;
        }
        *ptr = '/0';
        RETURN_STRINGL(result, result_length, 0);

}

7. test_extension 디렉터리 아래에서 실행: /usr/local/bin/phpize

Configuring for:
PHP Api Version:         
20121113Zend Module Api No:      
20121212Zend Extension Api No:   
220121212

8. 구성: ./configure –with-php-config=/usr/local/bin/php-config

9. 컴파일: make
10. 설치: make install
설치가 완료되면 /usr/local/lib/php/extensions/no-debug-zts- 아래에 test_extension.so가 생성됩니다. 20121212/

11. php .in을 수정하고 다음을 추가합니다: Extension=test_extension.so

위 내용은 LINUX 환경을 위한 PHP 확장 개발 코드 예제 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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