apxs编译php.so,用apache的动态so模式编写和编译php扩展

本文介绍了如何在已配置的Apache和PHP环境下添加自定义的PHP动态扩展SO模块。首先,通过`ext_skel`创建扩展结构,然后编辑config.m4、.c和.h文件,接着执行`buildconf`、`configure`、`make`等命令编译和安装扩展。此外,还提到了使用phpize工具编译扩展的另一种方法,该方法可以在独立目录下完成。
摘要由CSDN通过智能技术生成

看过我另外一篇关于用c语言编写php扩展so模块的朋友,应该已经了解大致的php模块编写过程,(原文:http://www.toplee.com/blog/56.html) 不过该文中没有专门针对已经安装好的系统进行说明,如何在现有apache、php运行环境下添加一个动态的so扩展,下面简单的整理一下。

大致的步骤如下:

[coolcode]

#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

[/coolcode]

最后从phpinfo()函数看看返回结果,如果看到有toplee部分,那么恭喜你!如果没有,按照步骤好好检查一下!

这是我的phpinfo看到的结果:

c89740a094ab174b07d47c6b11c62d9e.png

另外,顺便提一下另外一种编译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,呵呵,这就是你想要的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值