用apache的动态so模式编写和编译php扩展
来源:互联网 发布:域名cdn加速 编辑:程序博客网 时间:2024/06/05 16:30
看过我另外一篇关于用c语言编写php扩展so模块的朋友,应该已经了解大致的php模块编写过程,(原文:http://www.toplee.com/blog/56.html) 不过该文中没有专门针对已经安装好的系统进行说明,如何在现有apache、php运行环境下添加一个动态的so扩展,下面简单的整理一下。
大致的步骤如下:
#cd /usr/port/distfiles/php-5.1.4/ext/ (进入到您的php源码目录)
#./ext_skel --extname=toplee (此处的toplee为您的扩展so的名称)
#cd ..
#vim ./ext/toplee/config.m4 (修改config.m4文件,此处细节可以参考我另外那篇文章中说明)
#vim ./ext/toplee/toplee.c (修改和加入您自己的c代码)
#vim ./ext/toplee/toplee.h (修改和添加函数定义代码)
#./buildconf --force (加上force参数是避免您使用的php版本为release版本)
如果上面命令执行中提示autoconf not found之类的错误,可以执行下面命令
#export PHP_AUTOCONF=/usr/local/bin/autoconf259 (这里的autoconf259路径和名称根据您自己安装的autoconf情况而定)
#export PHP_AUTOHEADER=/usr/local/bin/autoheader259 (autoheader259同上)
#./buildconf --force
#./configure --disable-all --with-toplee=shared --with-apxs2=/usr/local/sbin/apxs
上面命令中,--disable-all是为了加快编译速度而使用的,减少php默认要编译的模块数量。 --with-toplee=shared为了编译后能直接生产.so文件, --with-apxs2=/usr/local/sbin/apxs是根据您服务器上apache安装具体路径和版本来确定的
#make
#cp ./ext/toplee/.libs/toplee.so /usr/local/lib/php/20050922/ (把生产的so文件拷贝到您的php存放so扩展文件的目录下)
#vim /usr/local/etc/php/extensions.ini (加入toplee.so一行)
#/usr/local/etc/rc.d/apache22.sh restart
#./ext_skel --extname=toplee (此处的toplee为您的扩展so的名称)
#cd ..
#vim ./ext/toplee/config.m4 (修改config.m4文件,此处细节可以参考我另外那篇文章中说明)
#vim ./ext/toplee/toplee.c (修改和加入您自己的c代码)
#vim ./ext/toplee/toplee.h (修改和添加函数定义代码)
#./buildconf --force (加上force参数是避免您使用的php版本为release版本)
如果上面命令执行中提示autoconf not found之类的错误,可以执行下面命令
#export PHP_AUTOCONF=/usr/local/bin/autoconf259 (这里的autoconf259路径和名称根据您自己安装的autoconf情况而定)
#export PHP_AUTOHEADER=/usr/local/bin/autoheader259 (autoheader259同上)
#./buildconf --force
#./configure --disable-all --with-toplee=shared --with-apxs2=/usr/local/sbin/apxs
上面命令中,--disable-all是为了加快编译速度而使用的,减少php默认要编译的模块数量。 --with-toplee=shared为了编译后能直接生产.so文件, --with-apxs2=/usr/local/sbin/apxs是根据您服务器上apache安装具体路径和版本来确定的
#make
#cp ./ext/toplee/.libs/toplee.so /usr/local/lib/php/20050922/ (把生产的so文件拷贝到您的php存放so扩展文件的目录下)
#vim /usr/local/etc/php/extensions.ini (加入toplee.so一行)
#/usr/local/etc/rc.d/apache22.sh restart
最后从phpinfo()函数看看返回结果,如果看到有toplee部分,那么恭喜你!如果没有,按照步骤好好检查一下!
这是我的phpinfo看到的结果:
另外,顺便提一下另外一种编译php扩展的方法,就是使用phpize工具,这种方法允许你在一个独立编写的目录下编译php的扩展,不用按照前面的方式在php源文件目录的ext下,大致的思路是:
1.创建自己的扩展目录 toplee
2.编写config.m4文件,可以参考前面ext_skel生成的范本
3.执行 phpize 命令
4.执行 ./configure –enable-toplee –with-apxs2=/usr/local/sbin/apxs
–with-php-config=/usr/local/bin/php-config
5.make
这时会在当前目录下生产一个toplee.so,呵呵,这就是你想要的!
- 用apache的动态so模式编写和编译php扩展
- 用apache的动态so模式编写和编译php扩展
- 用apache的动态so模式编写和编译php扩展
- LINUX下PHP编译添加相应的动态扩展模块so(不需要重新编译PHP,以openssl.so为例)
- Linux下已编译PHP增加扩展so的方法,关键phpize 和config.m4
- php扩展开发1(apache和php源码编译)
- PHP扩展开发之动态加载so模块与静态重编译PHP(上)
- PHP扩展开发之动态加载so模块与静态重编译PHP(下)
- php调用c语言编写的so动态库
- php调用c语言编写的so动态库
- php调用c语言编写的so动态库
- php调用c语言编写的so动态库
- php调用c语言编写的so动态库
- php扩展模块的安装和编写
- Linux-CentOS 编译PHP扩展库.so
- php编译安装添加pdo_mysql.so扩展
- Linux下.so的编写,编译和运行
- 用C编写你自己的php扩展
- PHP 大文件上传进度条实现
- 做了一点心里踏实的事.
- 冒泡排序法 自己写的 大家分享
- Memcached和Lucene笔记
- 抓狂---------------
- 用apache的动态so模式编写和编译php扩展
- 抄手天下
- 用apache的动态so模式编写和编译php扩展
- [Excel] 根据A列,自动生成B列值
- 拿webshell权限的45种方法
- 镜头太贵了
- 两个PHP给图片加水印的代码分享
- 50检测技巧总结
- 2.5 限定符(5)