C语言实现简单php自定义扩展
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自定义扩展的更多相关文章
- Notepad++语言格式设置,自定义扩展名关联文件格式
简单粗暴--直接上图
- C语言之三字棋的简单实现及扩展
C语言之三字棋的简单实现及扩展 在我们学习完数组之后,我们完全可以利用数组相关知识来写一个微小型的游戏,比如说今天所说的--三子棋. 大纲: 文件组成 实现 完整代码展示 扩展 即: 一.文件 ...
- SharePoint 2013 自定义扩展菜单
在对SharePoint进行开发或者功能扩展的时候,经常需要对一些默认的菜单进行扩展,以使我们开发的东西更适合SharePoint本身的样式.SharePoint的各种功能菜单,像网站设置.Ribbo ...
- SharePoint 2013 自定义扩展菜单(二)
接博文<SharePoint 2013 自定义扩展菜单>,多加了几个例子,方便大家理解. 例七 列表设置菜单扩展(listedit.aspx) 扩展效果 XML描述 <CustomA ...
- WCF自定义扩展,以实现aop!
引用地址:https://msdn.microsoft.com/zh-cn/magazine/cc163302.aspx 使用自定义行为扩展 WCF Aaron Skonnard 代码下载位置: S ...
- Jquery自定义扩展方法(二)--HTML日历控件
一.概述 研究了上节的Jquery自定义扩展方法,自己一直想做用jquery写一个小的插件,工作中也用到了用JQuery的日历插件,自己琢磨着去造个轮子--HTML5手机网页日历控件,废话不多说,先看 ...
- Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议(转载)
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- C语言,简单计算器【上】
由于工作需要最近在研究PHP扩展,无可避免的涉及到了C语言.从出了学校以后C语言在实际工作中还没有用到过,所以必须要先进行一点复习工作.个人认为对于熟悉一样东西说最好的方法是上手实践.于是便想起了当时 ...
- lombok自定义扩展实践
lombok是一款能够在java代码编译阶段改变代码的插件.比如生成setter和getter方法,生成log类变量等,能够简化一些特定的模版式代码.本文将以实现一个基于特定注解生成日志代码的方式,简 ...
随机推荐
- Fragment之间的通信(四)
自定义两个fragment的布局和java类. 在mainactivity中引用布局文件 在其中的一个fragment中的控件上添加监听,获取到另一个fragment中控件的内容,展示出来完成frag ...
- C++11 auto_ptr 的问题
auto_ptr作为最早的智能指针,可以实现以RAII手法管理堆区对象,但它设计的本意只是简单的利用C++对于栈区对象的自动析构管理堆区对象, 并不像shared_ptr那样包含引用计数,可以在每次拷 ...
- Java—从文件中读取数据
1.FileInputStream() // 构建字节输入流对象,参数为文件名 FileInputStream fin = new FileInputStream("message" ...
- c++ boost (递归)遍历目录
c++ 终于有办法跨平台访问文件系统了,虽然还是要借助boost.不多说,上代码 /** visitdir.cpp **/#include <iostream> #include < ...
- codeforces 723E (欧拉回路)
Problem One-Way Reform 题目大意 给一张n个点,m条边的无向图,要求给每条边定一个方向,使得最多的点入度等于出度,要求输出方案. 解题分析 最多点的数量就是入度为偶数的点. 将入 ...
- MySQL的左连接、右连接和全连接的实现
表student:+----+-----------+------+| id | name | age |+----+-----------+------+| 1 | Jim | 18 || 2 | ...
- GCD: 基本概念和Dispatch Queue 【转】
什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写.从基本功能上讲,GCD有点像 NSOperationQueue,他们都允 ...
- PHPnow在win8下安装失败的解决办法
提示: 安装服务[ Apache_pn ]失败,可能原因如下:1.服务名已存在,请卸载或使用不同服务名.2.非管理员权限,不能操作Window NT服务. 解决方案: 搜索:命令提示符 , 右键以 ...
- 一起来学习DOJO吧--序
DOJO的官方站点http://dojotoolkit.org/ DOJO是一套完整的javascript解决方案,从UI到类库都提供了全覆盖的支持. DOJO是一套很重的框架,在运用到项目中前请谨慎 ...
- C#异常语句
try: 用于检查发生的异常,并帮助发送任何可能的异常. catch: 以控制权更大的方式处理错误,可以有多个catch子句. finally :无论是否引发了异常,finally的代码块都将被执行. ...