在linux上进行php开发扩展

运行环境:


我在服务器上曾经配过lamp,php版本为5.3.10,可在ubuntu上配置的php不是php源码,所以需要再下载一版源码,下载地址是 http://cn2.php.net/distributions/php-5.3.28.tar.bz2 (注:此版本虽为5.3.28,个人猜测只要大版本号不变,编译出的扩展是可以兼容的


下载完成后安装:

tar -jxvf 源码包名称

找到安装路径下的ext文件夹,这里有很多常用的扩展源码,还有一个ext_skel的脚本程序,用来在Unix环境下生成扩展骨架



我们为新扩展命名为okok,使用ext_skel创建骨架:

./ext_skel --extname=okok

我们发现在ext文件夹下多了一个叫okok的文件夹,进入后有三个文件需要我们修改(config.m4, okok.c, php_okok.h):


1>config.m4

打开后注意这里

这是修改后的结果,修改前红框中的内容都被dnl注释掉了,注释说的很清楚,如果我们的扩展需要使用外部组件,则使用。。。否则使用。。。 所以这里选择第二种方式,把注释去掉,保存


2>okok.c

打开后找到

PHP_FE(confirm_okok_compiled, NULL)这是脚本自动生成的一个函数,后面有与之对应的函数体,这里我们可以添加多个自定义的函数,为了演示我们修改原confirm_okok_compiled为okok,然后在此文件中找到PHP_FUNCTION(comfirm_okok_compiled),修改为PHP_FUNCTION(okok) ,这里的对应关系大家应该不难明白,函数体里可以自定义方法,本文不涉及实现问题,我们不对函数体做修改(这里有编写好的测试代码),保存


3>php_okok.h

这是很容易忽略的一步,打开找到PHP_FUNCTION(comfirm_okok_compiled),修改为PHP_FUNCTION(okok),如果添加新的函数则对应添加


回到okok目录下,开始编译

1>/usr/bin/phpize

2>./configure

3>make

4>make install


这时,在 /usr/lib/php5/20090626 目录下,生成了okok.so扩展文件,引用扩展就不再赘述了



-------------------------------------------------------------------------------------------------------


做了一个小实验,想知道当自己写的扩展函数如果与php自身或其他扩展的函数名相同时会发生什么,结果编写了一个phpinfo()的自定义函数,重启Apache失败,静态页也无法打开




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值