用C开发PHP扩展 实例(基础版)
第一步:建立扩展骨架。
cd /usr/local/src/php-5.3.6/ext/
./ext_skel --extname=laiwenhui
第二步:修改编译参数。
cd php-5.3.6/ext/laiwenhui
vi config.m4
去掉 
 
 PHP_ARG_ENABLE(laiwenhui, whether to enable laiwenhui support,
 [  --enable-laiwenhui           Enable laiwenhui support])
 
 两行前面的dnl
 
 修改后为:
 
 
 dnl Otherwise use enable:
 PHP_ARG_ENABLE(laiwenhui, whether to enable laiwenhui support,
 dnl Make sure that the comment is aligned:
 [  --enable-laiwenhui           Enable laiwenhui support])
第三步:编写代码
vim php_laiwenhui.h
在
PHP_FUNCTION(confirm_laiwenhui_compiled);
后面新增一行
PHP_FUNCTION(test);
vim laiwenhui.c
在
PHP_FE(confirm_laiwenhui_compiled, NULL)
后面添加
 
 
 PHP_FE(test, NULL)
**在文件最后面增加如下代码:**
PHP_FUNCTION(test)
{
char *arg = "This is my first extention!";
int len;
char *strg; len = spprintf(&strg, 0, "%s\n", arg);
RETURN_STRINGL(strg, len, 0);
}
第四步:编译代码
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
我的PHP安装路径为:/usr/local/php
 
 这个时候会生成一个文件 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/laiwenhui.so
编辑PHP配置文件php.ini,添加扩展:
vim php.ini
在[PHP]模块下增加:
extension = laiwenhui.so
把php.ini 文件中的 extension_dir 修改为该目录:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
第五步:检查安装结果
1.重启php-fpm,ngixn
 
 2./use/local/php/bin/php -m
 
 看下是否有包含laiwenhui扩展。
第六步:执行测试代码
在网站根目录创建test.php
 
 vim test.php
 
 代码内容如下
 
 <?php
 
 echo test();
执行后结果为:
 
 This is my first extention!
如果你能顺利完成以上几步,恭喜你完成了第一个扩展。
用C开发PHP扩展 实例(基础版)的更多相关文章
- Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)
		最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ... 
- 学习参考《Flask Web开发:基于Python的Web应用开发实战(第2版)》中文PDF+源代码
		在学习python Web开发时,我们会选择使用Django.flask等框架. 在学习flask时,推荐学习看看<Flask Web开发:基于Python的Web应用开发实战(第2版)> ... 
- 使用Typescript重构axios(九)——异常处理:基础版
		0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ... 
- 《Linux设备驱动开发具体解释(第3版)》进展同步更新
		本博实时更新<Linux设备驱动开发具体解释(第3版)>的最新进展. 2015.2.26 差点儿完毕初稿. 本书已经rebase到开发中的Linux 4.0内核,案例多数基于多核CORTE ... 
- PHP和MySQL Web开发(原书第4版) 高清PDF+源代码
		PHP和MySQL Web开发(原书第4版) 高清PDF+源代码 [日期:2014-08-06] 来源:Linux社区 作者:Linux [字体:大 中 小] 内容简介 <PHP和My ... 
- 网页游戏开发秘笈 PDF扫描版
		精选10种常见的游戏类型,透过典型实例,深入剖析游戏引擎及工具的选用技巧,详细讲解每款游戏的制作过程,为快速掌握网页游戏开发提供系统而实用的指南. 网页游戏开发秘笈 目录: 译者序 前 言 导 言 ... 
- J20航模遥控器开源项目系列教程(一)制作教程 | 基础版V1.0发布,从0到1
		我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/C ... 
- swift开发多线程篇 - 多线程基础
		swift开发多线程篇 - 多线程基础 iOS 的三种多线程技术 (1)NSThread 使用NSThread对象建立一个线程非常方便 但是!要使用NSThread管理多个线程非常困难,不推荐使用 ... 
- 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
		手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩 ... 
随机推荐
- HDU 4891 The Great Pan
			模拟题. #include<map> #include<set> #include<ctime> #include<cmath> #include< ... 
- PLSQL的注释技巧
			概述 这里提供一些注释的技巧,用来模仿Java中的文档注释的功能. 在Eclipse中,鼠标悬浮在类或其成员上,会显示相关的文档注释:在PL/SQL中也有类似的功能,我们需要掌握一些注释技巧,让其可读 ... 
- 第7天-javascript内置对象
			数组相关方法 concat 用来连接多个数组 <script> var a = [1,2,3]; var b = [3,4,5]; var c = a.concat(b); console ... 
- 【Tempest】openstack自动化测试组件tempest及自动化测试工具nose
			宝宝心里苦,但是宝宝只能在这穷乡僻壤说,下周又要开组会必须得干点事了.这次是做论文中的实验部分,主要利用到了openstack中的自动化测试组件Tempest,具体原因不细说了. 安装 分两种安装方法 ... 
- SSL压力测试工具THC-SSL-DOS
			SSL压力测试工具THC-SSL-DOS SSL广泛应用安全加密和认证领域,如HTTPS.POP等服务.使用SSL,会加重服务器的负担.例如,在协商阶段,服务器的CPU开销是客户端的15倍.Kal ... 
- BZOJ 2323: [ZJOI2011]细胞
			嗯..csdn发得出markdown了..请移步~ 个人觉得那个帅一点 嗯 好题啊!! 矩乘+DP 蒟蒻的我一开始发现了斐波那契数列之后就不会搞了.. 那个..什么质量相同两种方案相同就是扯淡的..想 ... 
- 洛谷P2782 友好城市
			题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市.北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同.没对友好城市都向政府申请在河上开辟一条直线航 ... 
- [Luogu2540][NOIP2016]斗地主增强版(搜索+DP)
			增强版就是原版中两鬼不算对子的版本. 先爆搜出完所有对子,剩下的牌DP处理. 考虑每个数码的拆牌情况,最多可能被拆成5种情况:1+1+1+1,1+1+2,1+3,2+2,4.故DP状态数最多为5^13 ... 
- 【高斯消元解xor方程组】BZOJ2466-[中山市选2009]树
			[题目大意] 给出一棵树,初始状态均为0,每反转一个节点的状态,相邻的节点(父亲或儿子)也会反转,问要使状态均为1,至少操作几次? [思路] 一场大暴雨即将来临,白昼恍如黑夜!happy! 和POJ1 ... 
- 【bfs+优先队列】POJ2312-Battle City
			[思路] 题目中的“可以沿直线发射打破砖墙”可能会迷惑到很多人,实际上可以等价理解为“通过砖墙的时间为2个单位”,这样题目就迎刃而解了.第一次碰到时可能不能很好把握,第二次基本就可以当作水题了. [错 ... 
