• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 3年前 (2022-01-22) 16次浏览 已收录 0个评论

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)

3、通过扩展框架生成器生成框架目录:
ext_skel –extname=test_extension –proto=test_extension.def
生成成功结果如下:

Creating directory test_extensionawk: /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 t<div style="color:transparent">本文来源gaodai.ma#com搞##代!^码@网*</div><pre>搞gaodaima代码

he following steps:1. $ cd ..2. $ vi ext/test_extension/config.m43. $ ./buildconf4. $ ./configure –[with|enable]-test_extension5. $ make6. $ ./sapi/cli/php -f ext/test_extension/test_extension.php7. $ vi ext/test_extension/test_extension.c8. $ makeRepeat steps 3-6 until you are satisfied with ext/test_extension/config.m4 andstep 6 confirms that your module is compiled into PHP. Then, start writingcode 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、实现函数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);}

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-20121212/下会生成test_extension.so

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

以上就是PHP扩展开发-LINUX环境的代码实例分享的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP扩展开发-LINUX环境的代码实例分享

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址