快速业务通道

PHP5自定义Module开发

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22

本文中需要用到上一篇文章中,只不过需要编译成动态或静态链接库的形式。本文中,将WebService客户端程序中的main()改名为testPhpModule(),并将打印到控制台的字符串返回,编译完成后生成文件名为libTest.so。

一、环境准备

将生成的libTest.so文件拷贝到/usr/lib目录下,并执行命令/sbin/ldconfig

准备PHP的源代码文件,解压缩。

二、开发PHP Module

首先进入PHP源代码目录中的ext目录,执行如下命令:

# ./ext_skel --extname=自定义模块名

执行完成后,会生成以“自定义模块名”命名的文件夹,进入这个文件夹后编辑config.m4文件

找到如下代码:

dnl PHP_ARG_WITH(Test, for Test support,
dnl Make sure that the comment is aligned:
dnl [  --with-Test             Include Test support])

或者

dnl PHP_ARG_ENABLE(Test, whether to enable Test support,
dnl Make sure that the comment is aligned:
dnl [  --enable-Test           Enable Test support])

去掉每行前面的dnl

如果是想通过动态引用,建议使用--enable-Test

三、编写调用函数

编辑Test.c文件,找到如下代码:

zend_function_entry Test_functions[] = {
        PHP_FE(confirm_Test_compiled,    NULL)   /* For testing, remove later. */
        PHP_FE(test, NULL)  /* 增加这一行,其中test代表在PHP文件中的函数调用名 */
        {NULL, NULL, NULL}  /* Must be the last line in Test_functions[] */
};

在Test.c文件的最后,增加代码:

PHP_FUNCTION(test)
{
    RETURN_STRING(testPhpModule());
}

进行编译:

$ ./configure –with-php-config=${PHP_HOME}/bin/php-config
$ make LDFLAGS=-lTest
$ make test

四、测试Module

将编译完成后的模块so文件拷贝到Apache目录下:

# cp modules/Test.so /usr/local/apache2/htdocs/
在/usr/local/apache2/htdocs/目录下编辑PHP文件
# vi test.php

文件中的代码如下:

<?php
    dl(“Test.so”);
    echo test();
?>

启动Apache,访问test.php,成功的话页面上会显示和main()函数同样的输出结果。

本文出自 “玄武·巴依” 博客,请务必保留此出处http://commandos.blog.51cto.com/154976/130700

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号