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

上图是我的php源码目录

2、进入到ext目录:

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

新建一个预定义文件: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

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

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

85行:c语言的求和

86行:ZEND API的返回语法

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

7、configure

8、make

9、make install

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

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

11、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类,验证框架的总结和建议(转载)

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

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

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

  9. lombok自定义扩展实践

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

随机推荐

  1. iOS 服务器回空数据的处理

    后端返回一个数组类型的数据,但是数据里面包含"<null>","(null)"等,本地缓存写入数据失败,write to File: 方法限制, 可 ...

  2. CxImage图像库的使用 .

    http://blog.csdn.net/wangjie0377/article/details/7830405 CxImage图像库 CxImage下载地址:http://www.codeproje ...

  3. Gnu C的不同于标准C的语法

    2. ,## 是与逗号合在一起用的, 表示后面有变量,则显示逗号,若后面无变量,则不显示逗号, 这种情况适用于用宏替换可变参数的函数,调用的时候可能传一个参数,或传两个参数, 这种打印语句在平台上,函 ...

  4. BZOJ 1468 树分治

    求出子树的重心后求出它每个子节点的距离,排序后就可以统计距离小于等于K的点对的个数了,但是会在同一子树内重复,然后在每个子树里面减去小于等于K的点对个数就可以了. #include <iostr ...

  5. window 下如何安装ghost博客

    1.安装nodejs # Node v0.12.x and v4.2+ LTS - supported 我本地安装的是4.2 安装其他版本可能提示系统不兼容 2.安装mysql 3.安装bower 4 ...

  6. GitHub菜鸟日志1——20160531

    好吧,事实上很早就知道有github这个东西了,然而就有一种莫名的力量一直阻止着我向这“未知的领域”涉足(which is called lazy). 然后,前略...总之,默默的就开始了github ...

  7. [.NET] 自己实现任务池(模仿线程池)

    线程池虽然好用,但限制也不少: (1)总觉得默认的 MaxThread 小了一点,每次使用都要手工调大= = (2)任务不能等待完成 (3)任务一旦加入不能取消,甚至不知道是正在排队/正在执行/执行完 ...

  8. Android通过webservice连接SQLServer 详细教程(数据库+服务器+客户端)

    http://blog.csdn.net/zhyl8157121/article/details/8169172 目录(?)[-] 项目说明 开发环境的部署 数据库设计 服务器端程序设计Webserv ...

  9. Objective C运行时(runtime)

    #import <objc/runtime.h> void setBeingRemoved(id __self, SEL _cmd) { NSLog(@"------------ ...

  10. JS中直接从java后台获得对象的值(数组的值)

    这里举得例子是:JS直接从后台Contorller中(SpringMVC中的model中)获得数值的值 Contorller 此处将 talentIntegralRecordsDay talentIn ...