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. 2014年7月份第3周51Aspx源码发布详情

    Froor高校校园网站源码  2014-7-18 [VS2010]源码介绍:这是一款有关高校门户网站的毕业设计源码,功能相对比较完善,界面也比较美观,对门户网站感兴趣的朋友们可以下载研究一下.该源码功 ...

  2. Unity Ugui射线坐标转换总结

    世界空间中的点坐标转换到屏幕坐标: screenPos = RectTransformUtility.WorldToScreenPoint(cam, worldPos.transform.positi ...

  3. @SuppressWarnings("finally")

    @SuppressWarnings.该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默.   批注允许您选择性地取消特定代码段(即,类或方法)中的警告.其中的想法是当您看到 ...

  4. vs2010无可用源

    全选CPP文件内容,选择 “编辑”-“高级”-“设置选定内容的格式”,保存,重新编译. 当然这种方法是不能完全解决这个问题的奥,你需要在菜单栏的生成里面找到重新生成解决方案,重新生成解决方案试一下啦, ...

  5. 深入理解ecshop2.7.3整合discuzX3.2(97%的完美方案)

    转载http://blog.csdn.net/squallleonheart/article/details/39555259 ecshop整合discuzX3.2 ecshop安装包:ECShop_ ...

  6. C - 搜索

    Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Descr ...

  7. 关于 Record & TList 的一点吐槽

    需求是把record 保存在TList中,并可以随时改变TList中Items的各项值. 代码很简单: MyRec = record MyStr: string; constructor Create ...

  8. shell命令

    1:操作系统:人--使用-->shell(或应用程序)--呼叫-->kernel(核心)--->硬件2:查看shell的种类:# cat /etc/shells3:而这个登入系统的 ...

  9. phpstorm10.0.1 注册

    注册时选择License server,填http://idea.lanyus.com,然后点击OK,就注册了

  10. Less函数说明

    索引 escape(@string); // 通过 URL-encoding 编码字符串 e(@string); // 对字符串转义 %(@string, values...); // 格式化字符串 ...