设为首页 收藏本站
查看: 738|回复: 0

[经验分享] 用apache的动态so模式编写和编译php扩展

[复制链接]

尚未签到

发表于 2015-8-5 12:24:26 | 显示全部楼层 |阅读模式
  看过我另外一篇关于用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  最后从phpinfo()函数看看返回结果,如果看到有toplee部分,那么恭喜你!如果没有,按照步骤好好检查一下!
这是我的phpinfo看到的结果:
DSC0000.jpg
  另外,顺便提一下另外一种编译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,呵呵,这就是你想要的!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-94447-1-1.html 上篇帖子: apache安装后自启动问题 下篇帖子: 在ubuntu上安装支持ssl的apache
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表