C语言实现简单php自定义扩展

时间:2023-01-13 21:24:12

1、下载php源码

下载地址:http://cn2.php.net/get/php-5.6.29.tar.gz/from/this/mirror

传到/usr/local/src/下

上传命令:rz -ay php.tar.gz

解压:tar -zxvf php.tar.gz

C语言实现简单php自定义扩展

上图是我的php源码目录

2、进入到ext目录:

C语言实现简单php自定义扩展

在这里我们只实现一个简单的例子:写一个两个数求和的这么一个扩展

新建一个预定义文件:vim sum_module.def

内容如下:

int sum_module(int x, int y)

保存并退出

注:如果有多个扩展的话,每个一行,每行行尾不要加分号

3、使用ext_skel工具创建扩展主体架构

./ext_skel --extname=sum_module --proto=sum_module.def

这里解释一下:extname就是我们以后用到的扩展名,proto是我们刚才新建的那个预定义文件

执行完了ext_skel之后,会在ext目录下生成一个以扩展名为名字的文件夹

4、修改config.m4文件

将如下三行的注释标签"dnl"去掉,修改后如下所示:

PHP_ARG_ENABLE(myfunctions, whether to enable myfunctions support,

Make sure that the comment is aligned:

[  --enable-myfunctions           Enable myfunctions support])

保存退出

5、修改扩展原始文件sum_module.c

C语言实现简单php自定义扩展

注:只有84、85、86这三行是我自己写的,其它的都是自动生成的。

84行:C语言的定义一个long型的变量

85行:c语言的求和

86行:ZEND API的返回语法

6、用已安装好的php去编译

C语言实现简单php自定义扩展

7、configure

C语言实现简单php自定义扩展

8、make

C语言实现简单php自定义扩展

9、make install

C语言实现简单php自定义扩展

10、打开php.ini把sum_module.so加进入,然后重启php-fpm:/etc/init.d/php-fpm restart

C语言实现简单php自定义扩展

phpinfo查看已经有了这个扩展了。

11、php测试一下:

C语言实现简单php自定义扩展

OK,没问题,结束!

参考:http://www.cunmou.com/phpbook/7.1.md

C语言实现简单php自定义扩展的更多相关文章

  1. Notepad++语言格式设置,自定义扩展名关联文件格式

    简单粗暴--直接上图

  2. C语言之三字棋的简单实现及扩展

    C语言之三字棋的简单实现及扩展 在我们学习完数组之后,我们完全可以利用数组相关知识来写一个微小型的游戏,比如说今天所说的--三子棋. 大纲: 文件组成 实现   完整代码展示   扩展 即: 一.文件 ...

  3. SharePoint 2013 自定义扩展菜单

    在对SharePoint进行开发或者功能扩展的时候,经常需要对一些默认的菜单进行扩展,以使我们开发的东西更适合SharePoint本身的样式.SharePoint的各种功能菜单,像网站设置.Ribbo ...

  4. SharePoint 2013 自定义扩展菜单(二)

    接博文<SharePoint 2013 自定义扩展菜单>,多加了几个例子,方便大家理解. 例七 列表设置菜单扩展(listedit.aspx) 扩展效果 XML描述 <CustomA ...

  5. WCF自定义扩展,以实现aop!

    引用地址:https://msdn.microsoft.com/zh-cn/magazine/cc163302.aspx  使用自定义行为扩展 WCF Aaron Skonnard 代码下载位置: S ...

  6. Jquery自定义扩展方法(二)--HTML日历控件

    一.概述 研究了上节的Jquery自定义扩展方法,自己一直想做用jquery写一个小的插件,工作中也用到了用JQuery的日历插件,自己琢磨着去造个*--HTML5手机网页日历控件,废话不多说,先看 ...

  7. Silverlight实例教程 - 自定义扩展Validation类&comma;验证框架的总结和建议(转载)

    Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...

  8. C语言,简单计算器【上】

    由于工作需要最近在研究PHP扩展,无可避免的涉及到了C语言.从出了学校以后C语言在实际工作中还没有用到过,所以必须要先进行一点复习工作.个人认为对于熟悉一样东西说最好的方法是上手实践.于是便想起了当时 ...

  9. lombok自定义扩展实践

    lombok是一款能够在java代码编译阶段改变代码的插件.比如生成setter和getter方法,生成log类变量等,能够简化一些特定的模版式代码.本文将以实现一个基于特定注解生成日志代码的方式,简 ...

随机推荐

  1. js对象的继承以及公有私有属性的定义和读写

    最近想写一些js工具,有些方面需要用到面向对象的方法,比如继承父类属性和方法.通过私有化隐藏某些对象的属性等,因为没有系统的学习js,所以不知道怎么做,觉得很伤脑筋. 今天受到技术群里朋友的提示,并查 ...

  2. Java Hour 17 来个CURD吧(二)

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 突然想到我最近一直在追的小说,作者每天都会更新两章,而且质量挺高.所以从这篇开 ...

  3. 为什么要用Java泛型

    啥是泛型? 泛型(generic)是指参数化类型的能力.可以定义带泛型类型的类或方法,随后编译器会用具体的类型来代替它. 举个栗子 上述代码在编译期没有问题,但在运行期,将会报错.就是因为List的a ...

  4. Linux启动流程详解【转载】

    在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接 ...

  5. 你知道织梦后台安装插件时为什么会出现这个Character postion 686&comma; 'item'&n

    https://zhidao.baidu.com/question/589525064.html?qbl=relate_question_3&word=Tag Character postio ...

  6. Outlook2013怎样自动答复电子邮件

    工具/原料 office2013或outlook2013 百度经验:jingyan.baidu.com 方法/步骤 1 首先我们创建自己的答复邮件.打开outlook2013,单击“开始”>“新 ...

  7. result-charts

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  8. 几何&plus;点与线段的位置关系&plus;二分(POJ2318)

    TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10666   Accepted: 5128 Description ...

  9. leetcode27&lowbar;C&plus;&plus;Remove Element

    给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...

  10. PCA最小平方误差理论推导

    PCA最小平方误差理论推导 PCA求解其实是寻找最佳投影方向,即多个方向的标准正交基构成一个超平面. 理论思想:在高维空间中,我们实际上是要找到一个d维超平面,使得数据点到这个超平面的距离平方和最小 ...