php扩展开发入门demo示例


Posted in PHP onSeptember 23, 2019

本文实例讲述了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)

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

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

PHP_FUNCTION(myext_helloworld)
{
    char *arg = NULL;
  int arg_len, len;
  char *strg;
  if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
    return;
  }
  php_printf("my first ext,Hello World!\n");
  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

<?php
echo myext_helloworld('test');
?>

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

运行后输出

my first ext,Hello World!

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

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

PHP 相关文章推荐
同时提取多条新闻中的文本一例
Oct 09 PHP
转PHP手册及PHP编程标准
Dec 17 PHP
自己在做项目过程中学到的PHP知识收集
Aug 20 PHP
php打开文件fopen函数的使用说明
Jul 05 PHP
PHP include任意文件或URL介绍
Apr 29 PHP
PHP生成自定义长度随机字符串的函数分享
May 04 PHP
PHP实现股票趋势图和柱形图
Feb 07 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 PHP
PHP文件上传处理案例分析
Oct 15 PHP
Laravel学习教程之request validation的编写
Oct 25 PHP
PHP fclose函数用法总结
Feb 15 PHP
laravel实现上传图片并在页面显示的例子
Oct 14 PHP
PHP使用phpunit进行单元测试示例
Sep 23 #PHP
php快速导入大量数据的实例方法
Sep 23 #PHP
关于Yii中模型场景的一些简单介绍
Sep 22 #PHP
php定期拉取数据对比方法实例
Sep 22 #PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 #PHP
php设计模式之单例模式用法经典示例分析
Sep 20 #PHP
php数组和链表的区别总结
Sep 20 #PHP
You might like
PHP定时执行计划任务的多种方法小结
2011/12/19 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
viewer.js实现图片预览功能
2020/06/24 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
python生成lmdb格式的文件实例
2018/11/08 Python
Python基于百度云文字识别API
2018/12/13 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
西尔斯百货官网:Sears
2016/09/06 全球购物
行政专员工作职责
2013/12/22 职场文书
上课迟到检讨书
2014/02/19 职场文书
政风行风评议工作总结
2014/10/21 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python
python基础之//、/与%的区别详解
2022/06/10 Python
MySQL数据库查询之多表查询总结
2022/08/05 MySQL