Rumah > pembangunan bahagian belakang > tutorial php > PHP扩展开发-LINUX环境的代码实例分享

PHP扩展开发-LINUX环境的代码实例分享

黄舟
Lepaskan: 2023-03-06 20:22:01
asal
1455 orang telah melayarinya


LINUX环境下开发PHP扩展的步骤如下:

1、下载PHP源码,解压,我的解压目录是:/root/lamp/php-5.5.37

2、cd到/root/lamp/php-5.5.37/ext目录下,创建文件test_extension.def文件

int a(int x, int y)string b(string str, int n)
Salin selepas log masuk

3、通过扩展框架生成器生成框架目录:
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.
Salin selepas log masuk

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])
Salin selepas log masuk

6、实现函数a和b的功能,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);

}
Salin selepas log masuk

7、test_extension目录下执行:/usr/local/bin/phpize

Configuring for:
PHP Api Version:         
20121113Zend Module Api No:      
20121212Zend Extension Api No:   
220121212
Salin selepas log masuk

8、配置:./configure –with-php-config=/usr/local/bin/php-config
9、编译:make
10、安装:make install
安装完成后/usr/local/lib/php/extensions/no-debug-zts-20121212/下会生成test_extension.so

11、修改php.in,加上:extension=test_extension.so

Atas ialah kandungan terperinci PHP扩展开发-LINUX环境的代码实例分享. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan