当前位置:首页 > PHP教程 > php应用 > 列表

php扩展开发入门demo示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-21 15:01:13 浏览: 评论:0 

这篇文章主要介绍了php扩展开发,结合简单demo实例形式分析了php扩展编写、编译生成与运行等相关操作步骤及注意事项,需要的朋友可以参考下。

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

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

cd /owndata/software/php-5.4.13/ext

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

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

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

./ext_skel --extname=myext

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

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

cd myext

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

dnl PHP_ARG_WITH(myext, for myext support,

dnl Make sure that the comment is aligned:

dnl [ --with-myext       Include myext support])

将上面这段改成

PHP_ARG_WITH(myext, for myext support,

[ --with-myext       Include myext support])

2.编辑php_myext.h文件

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

PHP_FUNCTION(myext_helloworld);

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. }; 

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

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

四、编译php扩展

在myext目录下运行phpize

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

安装扩展

./configure --with-php-config=/usr/local/webserver/php/bin/php-config

make && make install

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

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

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

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

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

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

重启php-fpm

service php restart

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

/usr/local/webserver/php/bin/php -m|grep myext

确认成功后测试myext打印helloworld

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

或者创建demo.php

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

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

运行后输出

my first ext,Hello World!

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

Tags: php扩展开发 demo

分享到: