经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
php扩展开发入门demo示例
来源:jb51  时间:2019/9/24 8:33:43  对本文有异议

本文实例讲述了php扩展开发。分享给大家供大家参考,具体如下:

一、进入php源码包,找到ext文件夹

  1. cd /owndata/software/php-5.4.13/ext
  2.  

文件夹下放的都是php的相关扩展模块

二、生成自己的扩展文件夹和相关文件

php支持开发者开发自己的扩展,提供了ext_skel骨架,用来构建扩展基本文件

  1. ./ext_skel --extname=myext
  2.  

运行完成后,会在ext目录下生产一个myext扩展目录

三、编写一个hello world简单测试扩展

cd myext

1.编辑myext目录下的config.m4文件

  1. dnl PHP_ARG_WITH(myext, for myext support,
  2. dnl Make sure that the comment is aligned:
  3. dnl [ --with-myext Include myext support])
  4.  

将上面这段改成

  1. PHP_ARG_WITH(myext, for myext support,
  2. [ --with-myext Include myext support])
  3.  

2.编辑php_myext.h文件

修改php_myext.h,看到PHP_FUNCTION(confirm_myext_compiled); 这里就是扩展函数声明部分,可以增加一

  1. PHP_FUNCTION(myext_helloworld);
  2.  

3.编辑myext.c文件在这个里面增加一行PHP_FE(myext_helloworld,  NULL)

  1. const zend_function_entry myext_functions[] = {
  2. PHP_FE(confirm_myext_compiled, NULL) /* For testing, remove later. */
  3. PHP_FE(myext_helloworld, NULL)
  4. PHP_FE_END /* Must be the last line in myext_functions[] */
  5. };
  6.  

最后在文件末尾加入myext_helloworld执行代码

  1. PHP_FUNCTION(myext_helloworld)
  2. {
  3. char *arg = NULL;
  4. int arg_len, len;
  5. char *strg;
  6. if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
  7. return;
  8. }
  9. php_printf("my first ext,Hello World!\n");
  10. RETRUN_TRUE;
  11. }
  12.  

四、编译php扩展

在myext目录下运行phpize

/usr/local/webserver/php/bin/phpize

安装扩展

  1. ./configure --with-php-config=/usr/local/webserver/php/bin/php-config
  2. make && make install
  3.  

然后在php安装的目录下生产.so的文件

/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/myext.so

复制myext.so文件到php安装的扩展目录下

  1. cp myext.so /usr/local/webserver/php/ext/
  2.  

编辑php.ini文件加入一行扩展路径

  1. extension=/usr/local/webserver/php/ext/myext.so
  2.  

重启php-fpm

  1. service php restart
  2.  

查看php扩展是否安装进去了

  1. /usr/local/webserver/php/bin/php -m|grep myext
  2.  

确认成功后测试myext打印helloworld

  1. /usr/local/webserver/php/bin/php -r "myext_helloworld('test');"
  2.  

或者创建demo.php

  1. <?php
  2. echo myext_helloworld('test');
  3. ?>
  4.  

/usr/local/webserver/php/bin/php demo.php

运行后输出

my first ext,Hello World!

自此扩展开发小demo就实现了

更多关于PHP相关内容感兴趣的读者可查看jb51专题:《PHP扩展开发教程》、《PHP网络编程技巧总结》、《php curl用法总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《php字符串(string)用法总结

希望本文所述对大家PHP程序设计有所帮助。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号