在linux上进行php开发扩展
2014-03-11 17:35
246 查看
运行环境:
我在服务器上曾经配过lamp,php版本为5.3.10,可在ubuntu上配置的php不是php源码,所以需要再下载一版源码,下载地址是 http://cn2.php.net/distributions/php-5.3.28.tar.bz2 (注:此版本虽为5.3.28,个人猜测只要大版本号不变,编译出的扩展是可以兼容的)
下载完成后安装:
找到安装路径下的ext文件夹,这里有很多常用的扩展源码,还有一个ext_skel的脚本程序,用来在Unix环境下生成扩展骨架
我们为新扩展命名为okok,使用ext_skel创建骨架:
我们发现在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失败,静态页也无法打开
我在服务器上曾经配过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失败,静态页也无法打开
相关文章推荐
- 嵌入式Linux更改开机图片(小企鹅)
- CentOS上安装WordPress搭建博客平台
- Linux内核跟踪之syscall tracer
- Linux内核跟踪之trace框架分析
- Linux 的xargs命令
- Linux内核跟踪之ring buffer的实现
- Linux下读写芯片的I2C寄存器
- ARM Linux教程之前言:致入门者
- Linux 的cut命令
- 基于ARM11的嵌入式linux系统移植与实现--(笔记一)
- linux系统编程之信号(四):信号的捕捉与sigaction函数
- Boost下载安装编译配置使用指南(含Windows、Linux以及ARM Linux)
- 常用的linux命令
- linux系统编程之信号(三):信号的阻塞与未决
- linux mount disk
- linux 下安装php
- 【转载】Linux追加虚拟内存Swap
- 学习笔记 --- LINUX虚拟总线分析
- 浅谈 NCSI 及其在 Linux 上的实现
- CentOS的安装