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类变量等,能够简化一些特定的模版式代码.本文将以实现一个基于特定注解生成日志代码的方式,简 ...
随机推荐
- oracle:ORACLE 实际返回的行数超出请求的行数
写的存储过程,执行后一直报实际返回的行数超出请求的行数的错误. 原因:select prdt_id into prdt_id from.... 两个变量名称相同造成的..哎 第一个变量换成大写..问 ...
- 百度star编程赛-练习1
ztr loves math http://acm.hdu.edu.cn/showproblem.php?pid=5675 显然:4 ^ n * (a + b) * (a -b) #include & ...
- java nio(non-blocking io)简介及和io
在 Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节 的数据,面向流的I/O速度非常慢,而在Java 1 ...
- 用docker toolBox 搭建 nginx + flask + redis 环境
本篇博客,主要是了解一下docker-compose的使用,docker-compose是官方给出的同时部署多个容器的解决方案:当你需要多个容器同时运行作为你的解决方案时:比如构建一个网站,需要php ...
- HTML5的form表单属性
form:HTML4中,表单内的从属元素必须书写在<form></form>之内,但是在HTML5中,表单的从属元素可以处于页面的任何位置,然后为其添加form属性,属性值为f ...
- const和readonly区别
内容来源<<你必须知道的.NET>>(转载) 标题:什么才是不变:const和readonly 内容: const:用 const 修饰符声明的成员叫常量,是在编译期初始化并嵌 ...
- schematool -dbType mysql -initSchema hive startup failed...try this
schematool -dbType mysql -initSchema hive startup failed
- C++ 11 Template ... 与Decltype 测试
#include <iostream> #include "string" using namespace std; template<typename T> ...
- SIP模块版本错误问题:the sip module implements API v??? but XXX module requires API v???
系统安装了python 2.7,继续安装PyQt4,于是依次下载sip.pyqt4源码进行安装.用以下代码测试: import PyQt4.QtGui 显示出错.错误信息:the sip module ...
- SqlServer性能优化 性能调控(十)
如何做资源的调控: 1.建立资源池. 2.创建工作负荷组 create resource pool ImporPool with ( min_cpu_percent=30,max_cpu_percen ...